diff --git a/vp9/decoder/decodframe.c b/vp9/decoder/decodframe.c
index e7d5667..4682107 100644
--- a/vp9/decoder/decodframe.c
+++ b/vp9/decoder/decodframe.c
@@ -395,7 +395,7 @@
       eobtotal = vp9_decode_mb_tokens_16x16(pbi, xd, bc);
     } else if (tx_size == TX_8X8) {
       eobtotal = vp9_decode_mb_tokens_8x8(pbi, xd, bc);
-    } else {
+    } else if (mode != B_PRED) {
       eobtotal = vp9_decode_mb_tokens_4x4(pbi, xd, bc);
     }
   }
@@ -491,6 +491,8 @@
       xd->mode_info_context->bmi[i].as_mode.context = b->bmi.as_mode.context =
           vp9_find_bpred_context(b);
 #endif
+      if (!xd->mode_info_context->mbmi.mb_skip_coeff)
+        eobtotal += vp9_decode_coefs_4x4(pbi, xd, bc, PLANE_TYPE_Y_WITH_DC, i);
 #if CONFIG_COMP_INTRA_PRED
       b_mode2 = xd->mode_info_context->bmi[i].as_mode.second;
 
@@ -513,6 +515,8 @@
                                *(b->base_dst) + b->dst, 16, b->dst_stride);
       }
     }
+    if (!xd->mode_info_context->mbmi.mb_skip_coeff)
+      vp9_decode_mb_tokens_4x4_uv(pbi, xd, bc);
   } else if (mode == SPLITMV) {
     if (tx_size == TX_8X8) {
       vp9_dequant_idct_add_y_block_8x8(xd->qcoeff, xd->block[0].dequant,
diff --git a/vp9/decoder/detokenize.c b/vp9/decoder/detokenize.c
index 16e85a0..1194aa8 100644
--- a/vp9/decoder/detokenize.c
+++ b/vp9/decoder/detokenize.c
@@ -389,9 +389,9 @@
   return eobtotal;
 }
 
-static int decode_coefs_4x4(VP9D_COMP *dx, MACROBLOCKD *xd,
-                            BOOL_DECODER* const bc,
-                            PLANE_TYPE type, int i) {
+int vp9_decode_coefs_4x4(VP9D_COMP *dx, MACROBLOCKD *xd,
+                         BOOL_DECODER* const bc,
+                         PLANE_TYPE type, int i) {
   ENTROPY_CONTEXT *const A = (ENTROPY_CONTEXT *)xd->above_context;
   ENTROPY_CONTEXT *const L = (ENTROPY_CONTEXT *)xd->left_context;
   ENTROPY_CONTEXT *const a = A + vp9_block2above[i];
@@ -424,6 +424,17 @@
   return c;
 }
 
+int vp9_decode_mb_tokens_4x4_uv(VP9D_COMP* const dx,
+                                MACROBLOCKD* const xd,
+                                BOOL_DECODER* const bc) {
+  int eobtotal = 0, i;
+
+  for (i = 16; i < 24; i++)
+    eobtotal += vp9_decode_coefs_4x4(dx, xd, bc, PLANE_TYPE_UV, i);
+
+  return eobtotal;
+}
+
 int vp9_decode_mb_tokens_4x4(VP9D_COMP* const dx,
                              MACROBLOCKD* const xd,
                              BOOL_DECODER* const bc) {
@@ -433,17 +444,15 @@
   if (xd->mode_info_context->mbmi.mode != B_PRED &&
       xd->mode_info_context->mbmi.mode != I8X8_PRED &&
       xd->mode_info_context->mbmi.mode != SPLITMV) {
-    eobtotal += decode_coefs_4x4(dx, xd, bc, PLANE_TYPE_Y2, 24) - 16;
+    eobtotal += vp9_decode_coefs_4x4(dx, xd, bc, PLANE_TYPE_Y2, 24) - 16;
     type = PLANE_TYPE_Y_NO_DC;
   } else {
     type = PLANE_TYPE_Y_WITH_DC;
   }
 
   for (i = 0; i < 16; ++i) {
-    eobtotal += decode_coefs_4x4(dx, xd, bc, type, i);
+    eobtotal += vp9_decode_coefs_4x4(dx, xd, bc, type, i);
   }
-  do {
-    eobtotal += decode_coefs_4x4(dx, xd, bc, PLANE_TYPE_UV, i);
-  } while (++i < 24);
-  return eobtotal;
+
+  return eobtotal + vp9_decode_mb_tokens_4x4_uv(dx, xd, bc);
 }
diff --git a/vp9/decoder/detokenize.h b/vp9/decoder/detokenize.h
index 5a7d354..a8f78f4 100644
--- a/vp9/decoder/detokenize.h
+++ b/vp9/decoder/detokenize.h
@@ -16,9 +16,16 @@
 
 void vp9_reset_mb_tokens_context(MACROBLOCKD* const);
 
+int vp9_decode_coefs_4x4(VP9D_COMP *dx, MACROBLOCKD *xd,
+                         BOOL_DECODER* const bc,
+                         PLANE_TYPE type, int i);
+
 int vp9_decode_mb_tokens_4x4(VP9D_COMP* const, MACROBLOCKD* const,
                              BOOL_DECODER* const);
 
+int vp9_decode_mb_tokens_4x4_uv(VP9D_COMP* const dx, MACROBLOCKD* const xd,
+                                BOOL_DECODER* const bc);
+
 int vp9_decode_mb_tokens_8x8(VP9D_COMP* const, MACROBLOCKD* const,
                              BOOL_DECODER* const);
 
