Switch to pixel manipulation and blitting in preference to calling fillRect.
Update the image incrementally, for lulz speed.
Take more steps at a time if fewer values remain unknown
Detect cycles to terminate in-set pixels early.
Increase maximum number of steps to 2^53 (2^53+1 cannot be represented in a double)