diff --git a/libavcodec/loco.c b/libavcodec/loco.c
index cace4bb448535c9282042b3df43d5835450c6fb1..a0125549b1fddc9e6bb766aa89f829f1fe84bba9 100644
--- a/libavcodec/loco.c
+++ b/libavcodec/loco.c
@@ -188,11 +188,11 @@ static int decode_frame(AVCodecContext *avctx,
         decoded = loco_decode_plane(l, p->data[0], avctx->width, avctx->height,
                                     p->linesize[0], buf, buf_size, 1);
         buf += decoded; buf_size -= decoded;
-        decoded = loco_decode_plane(l, p->data[1], avctx->width / 2, avctx->height / 2,
-                                    p->linesize[1], buf, buf_size, 1);
-        buf += decoded; buf_size -= decoded;
         decoded = loco_decode_plane(l, p->data[2], avctx->width / 2, avctx->height / 2,
                                     p->linesize[2], buf, buf_size, 1);
+        buf += decoded; buf_size -= decoded;
+        decoded = loco_decode_plane(l, p->data[1], avctx->width / 2, avctx->height / 2,
+                                    p->linesize[1], buf, buf_size, 1);
         break;
     case LOCO_CRGB: case LOCO_RGB:
         decoded = loco_decode_plane(l, p->data[0], avctx->width, avctx->height,