zoom view was leaking memory as every scaled image was cached. The canvas can now copy data from another canvas directly so creating an intermediate image is unnecessary. this should reduce memory usage by a lot