almost finished zoom, found a mistake which results in program failing to zoom when topleft_grid is not [0, 0], so zoom and scroll don't work together, possible fix is to minus the topleft_grid point from the range of the for loop in the appropriate bit of code