I don't like that we essentially have another instance here of the bitmap create/destroy logic. I think I'd rather we create another bitmap than use the existing one with new image data.
It's not clear to me that decode_image_wic is even worth calling. Most of the logic in there is for reading image bits, and couldn't we in theory use blit_gif_frame or select_image_gif from the next patch for that?
Or, if we wanted to add another hook to it, we could ask decode_image_wic to not attempt to find a matching format, and instead fall back on the conversion to 32bppARGB.