On further testing:

up to 4.4: fine
https://squeak.js.org/run/#zip=https://files.squeak.org/4.4/Squeak4.4-12327.zip

since 4.5: broken
https://squeak.js.org/run/#zip=https://files.squeak.org/4.5/Squeak4.5-13680.zip

Filing 4.4's PNGReadWriter into 4.5 fixes the yellowing issue.

Just filing in 4.4's PNGReadWriter>>copyPixelsRGB: also fixes the yellowing issue.

Attaching ...

(I realize this may be entirely unrelated to the issue you are seeing)

Vanessa

On Sat, Feb 25, 2023 at 3:37 PM tim Rowledge <tim@rowledge.org> wrote:


> On 2023-02-25, at 2:41 PM, Vanessa Freudenberg <vanessa@codefrau.net> wrote:
>
> Ohhh would you look at that ... works perfectly in a 2.8 image:


Oh, right, so we've now written advanced new technology bugs. Lovely! These problem files are from CCTV cameras so who knows how well they obey any standards.

The current PNGReadWriter has a debug output to the Transcript that tells me the image has -
form = Form(252x172x32)
colorType = 2
interlaceMethod = 1
filters = {137->1 . 129->3 . 54->2 . 3->4}

whereas all the PNG's I can find that load 'properly' seem to have colorType = 6, interlace method = 0 and a bit oddly, appear to repeat the debug output as if it is processed twice? Hmm, shomething wrong offisher? Still, a different interlace code might be a good clue given the image actually *looks* like interlace-screwed.

Oh, so much for that theory, I found a demo png with colorType = 3 and interlace 1. Poo.

tim
--
tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim
Useful Latin Phrases:- Mellita, domi adsum. = Honey, I'm home.