diff --git a/libavcodec/vc1.c b/libavcodec/vc1.c
index ce4e8acd9cb5f33bd4e98736b08a7da8b6792706..848c422f4330d6a817ca82cfeb2363947faf2997 100644
--- a/libavcodec/vc1.c
+++ b/libavcodec/vc1.c
@@ -2962,7 +2962,7 @@ static int vc1_decode_p_block(VC1Context *v, DCTELEM block[64], int n, int mquan
         if(ttblk == TT_8X4_TOP || ttblk == TT_8X4_BOTTOM) ttblk = TT_8X4;
         if(ttblk == TT_4X8_RIGHT || ttblk == TT_4X8_LEFT) ttblk = TT_4X8;
     }
-    scale = 2 * mquant + v->halfpq;
+    scale = 2 * mquant + ((v->pq == mquant) ? v->halfpq : 0);
 
     // convert transforms like 8X4_TOP to generic TT and SUBBLKPAT
     if(ttblk == TT_8X4_TOP || ttblk == TT_8X4_BOTTOM) {