prevent the image inversion with negative zooms
major change: to circumvent the 4K x 4K texture limit of OpenGL, load large images a set of textured tiles 1K x 1K