Here's the basic idea with the zooming - this crashes though so I suspect we've got a memory leak or a segfault somewhere