PNG読み込みに使用しているTPNGImage1.564にパレット読み込みのバグがあるようです。
調べた結果、PNGの8bitインデックスカラーのファイルをTBitmapにAssignする時に化けてしまっているようです。そこでもう少しトレースしてみると、パレットがコピーされてないだけみたいなので
if Palette <> 0 then TBitmap(Dest).Palette := Palette;
という記述を1行足すことで解決できました。
追記
先ほどネットで検索したところ、やはり同じバグで悩んでいる人もいるようですね。