diff --git a/vp8/decoder/x86/dequantize_mmx.asm b/vp8/decoder/x86/dequantize_mmx.asm
index 7ad9289cc27372d9a1089046a5bd504ce76f1a35..f11eef35a71dbeadad759ae11c842dc1d2834568 100644
--- a/vp8/decoder/x86/dequantize_mmx.asm
+++ b/vp8/decoder/x86/dequantize_mmx.asm
@@ -261,8 +261,6 @@ sym(vp8_dequant_dc_idct_add_mmx):
         mov         rax,    arg(0) ;input
         mov         rdx,    arg(1) ;dq
 
-        movsxd      rcx,    dword ptr arg(6) ;Dc
-
         movq        mm0,    [rax   ]
         pmullw      mm0,    [rdx]
 
@@ -286,8 +284,13 @@ sym(vp8_dequant_dc_idct_add_mmx):
         movq        [rax+16],mm7
         movq        [rax+24],mm7
 
+        ; move lower word of Dc to lower word of mm0
+        psrlq       mm0,    16
+        movzx       rcx,    word ptr arg(6) ;Dc
+        psllq       mm0,    16
+        movd        mm7,    rcx
+        por         mm0,    mm7
 
-        pinsrw      mm0,    rcx,  0
         movsxd      rax,            dword ptr arg(4) ;pitch
         movsxd      rdi,            dword ptr arg(5) ;stride