diff --git a/libavcodec/nuv.c b/libavcodec/nuv.c
index 64956f916fdf84f17a8a93b409600096733a3c7a..b10b8db248eabbb02faed92eb99054c361eb3571 100644
--- a/libavcodec/nuv.c
+++ b/libavcodec/nuv.c
@@ -187,7 +187,7 @@ retry:
         if (av_lzo1x_decode(c->decomp_buf, &outlen, buf, &inlen))
             av_log(avctx, AV_LOG_ERROR, "error during lzo decompression\n");
         buf = c->decomp_buf;
-        buf_size = c->decomp_size - AV_LZO_OUTPUT_PADDING;
+        buf_size = c->decomp_size - AV_LZO_OUTPUT_PADDING - outlen;
     }
     if (c->codec_frameheader) {
         int w, h, q, res;
diff --git a/tests/ref/fate/nuv b/tests/ref/fate/nuv
index b04737895476fc38257a853c17ba37b20aeeaeae..69854f2b8fdd716d12f78b3a858c896c58405c10 100644
--- a/tests/ref/fate/nuv
+++ b/tests/ref/fate/nuv
@@ -25,6 +25,6 @@
 1, 29257, 4096, 0xd95a9277
 0, 30030, 460800, 0x4b7f4df0
 1, 31347, 4096, 0xae2bef2c
-0, 33033, 460800, 0xb30eb322
+0, 33033, 460800, 0xa57f20d0
 1, 33437, 4096, 0xbf031e83
 1, 35527, 4096, 0x4c83e2d1