diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
index 802b738d3060ffbac99e5e96a06c2440ff26a5b6..55c16d7e01fa7ab9fa1d17cc114010c1e9c11b21 100644
--- a/libavcodec/mpegvideo.c
+++ b/libavcodec/mpegvideo.c
@@ -3276,8 +3276,10 @@ void mpv_decode_mb_internal(MpegEncContext *s, int16_t block[12][64],
 skip_idct:
         if(!readable){
             s->hdsp.put_pixels_tab[0][0](s->dest[0], dest_y ,   linesize,16);
+            if (!CONFIG_GRAY || !(s->flags & CODEC_FLAG_GRAY)) {
             s->hdsp.put_pixels_tab[s->chroma_x_shift][0](s->dest[1], dest_cb, uvlinesize,16 >> s->chroma_y_shift);
             s->hdsp.put_pixels_tab[s->chroma_x_shift][0](s->dest[2], dest_cr, uvlinesize,16 >> s->chroma_y_shift);
+            }
         }
     }
 }