diff --git a/libavcodec/iff.c b/libavcodec/iff.c
index 9184015d50cace39e17c81598e220d8365186c0e..9582f9d25dc06b0dc0706eb1362806c063e6bebb 100644
--- a/libavcodec/iff.c
+++ b/libavcodec/iff.c
@@ -231,7 +231,7 @@ static int extract_header(AVCodecContext *const avctx,
         s->transparency = bytestream_get_be16(&buf);
         s->masking      = bytestream_get_byte(&buf);
         if (s->masking == MASK_HAS_MASK) {
-            if (s->bpp >= 8) {
+            if (s->bpp >= 8 && !s->ham) {
                 avctx->pix_fmt = AV_PIX_FMT_RGB32;
                 av_freep(&s->mask_buf);
                 av_freep(&s->mask_palbuf);