diff --git a/libavcodec/png.c b/libavcodec/png.c
index 0dd9eaec23fce01ecc59640f905df3d6bfbd6d0f..6d588c35a880b206964a5998c5cdf50e3d4d8f2d 100644
--- a/libavcodec/png.c
+++ b/libavcodec/png.c
@@ -850,7 +850,7 @@ static int encode_frame(AVCodecContext *avctx, unsigned char *buf, int buf_size,
         for(i = 0; i < 256; i++) {
             v = palette[i];
             alpha = v >> 24;
-            if (alpha != 0xff)
+            if (alpha && alpha != 0xff)
                 has_alpha = 1;
             *alpha_ptr++ = alpha;
             ptr[0] = v >> 16;