Make it store info per pixel and iterate them in parallel, rather than sequentially. Press the red flag to change the resolution. It looks really cool at low ones. It goes through every pixel, iterates the equation, throws out the early rejects, and then does it all again. The rejects are drawn as they are iterated, and everything is redrawn every 5 iterations. The next step is a Mandelbrot explorer, which reuses data when zooming and keeps refining all the currently visible points.
I completely restructured the code. So only a couple of things carry over from the original.