Zoom-in and Zoom-out percent should be reciprocal values
As it stands, the ZoomPercent is a property setting that defaults to 0.3. And in non-discrete (non-tile-based) zoom mode, the zoom ratio is set as follows:
ratio = zoomIn ? 1 - m_zoomPercent : 1 + m_zoomPercent;
This results in 0.7 and 1.3, which are not reciprocals of each other; and as result, if you left-click zoom-in, then right-click zoom out, you do not return to where you started.
I have submitted a change as follows: