private static void zoom(@Nonnull Node node, double factor, double x, double y) {
		double oldScale = node.getScaleX();
		double scale = oldScale * factor;

		if (scale < MIN_ZOOM) scale = MIN_ZOOM;
		if (scale > MAX_ZOOM) scale = MAX_ZOOM;
		node.setScaleX(scale);
		node.setScaleY(scale);

		double f = (scale / oldScale) - 1;
		Bounds bounds = node.localToScene(node.getBoundsInLocal());
		double dx = (x - (bounds.getWidth() / 2 + bounds.getMinX()));
		double dy = (y - (bounds.getHeight() / 2 + bounds.getMinY()));

		node.setTranslateX(node.getTranslateX() - f * dx);
		node.setTranslateY(node.getTranslateY() - f * dy);
	}
See: <a href="https://stackoverflow.com/questions/27356577/scale-at-pivot-point-in-an-already-scaled-node">
Jens-Peter Haack's zoom</a>

@param node
		Node to zoom into.
@param factor
		Factor of zoom to apply.
@param x
		Position to zoom into.
@param y
		Position to zoom into.
recaf-ui/src/main/java/software/coley/recaf/ui/control/PannableView.java