diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c
index 193e35e591ea94cbc61a22ae4d58e4886fb9cc7c..36db29e53e7b0270bac97c5d679739440812f7fe 100644
--- a/libavcodec/pngdec.c
+++ b/libavcodec/pngdec.c
@@ -853,7 +853,7 @@ static int decode_frame(AVCodecContext *avctx,
         }
     }
 
-    s->current_picture->metadata = metadata;
+    av_frame_set_metadata(&s->current_picture, metadata);
     metadata   = NULL;
     *picture   = *s->current_picture;
     *got_frame = 1;