diff --git a/libavcodec/vc1.c b/libavcodec/vc1.c
index 4f19dc29fec62eac7ed05d20aec3bcd1601d475b..ceb052528f2c2144a952aeb8a92ecf6547e5538f 100644
--- a/libavcodec/vc1.c
+++ b/libavcodec/vc1.c
@@ -2562,7 +2562,7 @@ static int vc1_decode_i_block_adv(VC1Context *v, DCTELEM block[64], int n, int c
     ac_val = s->ac_val[0][0] + s->block_index[n] * 16;
     ac_val2 = ac_val;
 
-    scale = mquant * 2 + v->halfpq;
+    scale = mquant * 2 + ((mquant == v->pq) ? v->halfpq : 0);
 
     if(dc_pred_dir) //left
         ac_val -= 16;