The easiest way to handle images in nightmode is unfortunately on the renderer's side: by rendering images inverted, so that the nightmode's invert will then "fix" them.
Doing it otherwise is highly impractical, since update regions can only be rectangles, so splitting a screen region in as many rectangles as necessary to "excise" a single image rectangle in the middle of the screen sounds like a terrible idea, and that already implies being able to exactly tell where the image even *is* on screen... (And if you want to go the extra mile and do the processing yourself so that you only end up with a single eInk update and not one per split rectangle, that's even more fun for you).
(And, no, before anyone asks, we don't do it "right" in KOReader either. I hate nightmode with a fiery passion, which probably doesn't help

[My rationale being it only makes sense on OLED screens]. But it's technically doable in KOReader: make the nightmode status accessible where relevant, so that image rendering can invert stuff, either at rendering time, or at blit time if the rendering backend doesn't support that (mupdf might, I haven't checked), and enforce a slightly less terrible waveform update mode when in nightmode, because anything else than GC16 will probably look god-damn awful. If latency is favorable, I'd even go so far as dimming the front-light during flashing updates so as not to burn retinas off. I think the Oasis 2 does something of the sort, besides having a proper invert-optimized waveform mode).
TL;DR: No, definitely not trivial to do right. But not exceedingly hard, either, unless you want a shiny waveform mode like lab126

.