On the fingerprinting noise: this sounds like a job for FEC [1]. It would increase the size but allow using the Canvas API. I don't know if this would solve the flicker though (not a front end expert here)
Also, it's a long shot, but could the combo of FEC (+size) and lossy compression (-size) be a net win?
Also, it's a long shot, but could the combo of FEC (+size) and lossy compression (-size) be a net win?
[1] https://en.m.wikipedia.org/wiki/Error_correction_code