Oh, that's... interesting. The script just uses "eips" to update the image - info here:
https://wiki.mobileread.com/wiki/Eips - syntax is "eips -f -g {imagefile}".
A fair bit has been said about the PNG format sent to the Kindle. The HA Kindle screensaver add-on (separate from my extension) has this to say:
https://github.com/sibbl/hass-lovela.../main/index.js - near the bottom, lines 302-326
It indicates the PNG output to be greyscale, bit depth 8 (that is actually somewhat unusual these days - creating a greyscale PNG specifically using 8-bit coding), with dithering and various other transformations that apply to the image, not the file format. With that, the missing piece may simply be to make it an 8-bit PNG, whereas most PNG output today is 24-bit color or higher.
Not sure if that's the whole problem, though. Rendering it twice is oddly suspicious, but one render could be coming from "linkss" rendering (which may be smarter), with a duplicate coming shortly behind it by the "eips" renderer called by the script.
If rendering it as an 8-bit PNG doesn't improve things, maybe upload an example file?
Also, unrelated - but I only noticed late in the game (while charging my Kindle for the week), that my newly improved extension will never update the screen while it's charging... it's entirely event-driven and focused on battery life above all else. It's better to cycle a battery than to keep it charging all the time anyway! (nervous laugh)... yeah, maybe I'll find a way to work "plugged-in" updates back into it in the future! It'd need to bring some self-timers back into the game, a bit ugly... but it might work.