diff --git a/libavcodec/vc1.c b/libavcodec/vc1.c
index b04d57060213cf6f61836dee6b9f8fbc73100a0f..c7edc25a2565c09eee6a36744148f0f5b227a135 100644
--- a/libavcodec/vc1.c
+++ b/libavcodec/vc1.c
@@ -1223,6 +1223,11 @@ int ff_vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb)
         break;
     }
 
+    if (v->fcm != PROGRESSIVE && !v->s.quarter_sample) {
+        v->range_x <<= 1;
+        v->range_y <<= 1;
+    }
+
     /* AC Syntax */
     v->c_ac_table_index = decode012(gb);
     if (v->s.pict_type == AV_PICTURE_TYPE_I || v->s.pict_type == AV_PICTURE_TYPE_BI) {
diff --git a/libavcodec/vc1dec.c b/libavcodec/vc1dec.c
index 40164cc9db65751764bb4ccdb2dda597b4c567fd..6bfba682d16accc1bd8743ddb364e35044ad8b77 100644
--- a/libavcodec/vc1dec.c
+++ b/libavcodec/vc1dec.c
@@ -1573,10 +1573,6 @@ static inline void vc1_pred_mv(VC1Context *v, int n, int dmv_x, int dmv_y,
         }
     }
 
-    if (v->field_mode && !s->quarter_sample) {
-        r_x <<= 1;
-        r_y <<= 1;
-    }
     if (v->field_mode && v->numref)
         r_y >>= 1;
     if (v->field_mode && v->cur_field_type && v->ref_field_type[dir] == 0)