diff --git a/libavcodec/pnm.c b/libavcodec/pnm.c
index 791829b..ac451ca 100644
--- a/libavcodec/pnm.c
+++ b/libavcodec/pnm.c
@@ -125,7 +125,12 @@ int ff_pnm_decode_header(AVCodecContext *avctx, PNMContext * const s)
                 avctx->pix_fmt = PIX_FMT_RGB48BE;
             }
         } else if (depth == 4) {
-            avctx->pix_fmt = PIX_FMT_RGB32;
+            if (maxval < 256) {
+                avctx->pix_fmt = PIX_FMT_RGB32;
+            } else {
+                av_log(avctx, AV_LOG_ERROR, "Unsupported bit depth\n");
+                return -1;
+            }
         } else {
             return -1;
         }
