My workaround is to use getImageData on a larger block size and that seemed to help tremendously.
Another bug is that firefox seems to have some numerical precision problems as I get a single pixel blank line gap near the bottom of my text sample. Again, Chromium doesn't have this issue.
I can't figure out why it has a gap here...
When I have more time, I may make it work on more than a single page at a time so that when it hits an FF it'll clear the canvas for the next page in the stream. Maybe I'll also upload the super-slow version that brings firefox to a crawl so you can see the difference.
Sample text rendered with firefox, note the gap in the last line of text.
Chromium renders the sample text perfectly, with no gap line.