What I've always wanted was to be able to put two fingers to mark the top left and bottom right of a bounding box which would mark how much to zoom in and hold for, say, half a second. To zoom out use two fingers to mark the top right and bottom left of the bounding box you want the current screen to zoom out to (again hold for half a second). This would be much more accurate. The time delay is to allow for mis-taps and to give the user time to get the bounding box the right size.
A variation would be similar but would be something like:
- hold two fingers on the screen until you get a bounding box like above.
- move the bounding box to the correct size.
- let go and the zoom happens.
With this method you could cancel the zoom action by collapsing the bounding box on itself vertically or horizontally.