public void centerZoom(
            double dx,
            double dy,
            double scale,
            AffineTransform af) {
        af.preConcatenate(AffineTransform.getTranslateInstance(-dx, -dy));
        af.preConcatenate(AffineTransform.getScaleInstance(scale, scale));
        af.preConcatenate(AffineTransform.getTranslateInstance(dx, dy));
        transform = af;
        syncScrollBars();
    }
Perform a zooming operation centered on the given point
(dx, dy) and using the given scale factor.
The given AffineTransform instance is preconcatenated.

@param dx    center x
@param dy    center y
@param scale zoom rate
@param af    original affinetransform
plugins/org.jkiss.dbeaver.ui.editors.image/src/org/jkiss/dbeaver/ui/controls/imageview/ImageViewCanvas.java