Avoid doing the same tranformations all over in each call to tileRectForCoordinate.
Do not resize tiles and then drop them because they are not out of the keep rect; instead drop before resizing.
Rename dropTilesOutsideRect to setKeepRect as it now stored the keep rect. This is used to avoid unneeded iteration of all tiles for invalidates outside the keep rect.
Created attachment 129666 [details]
Landed in 109327.