public void mouseWheelMoved(MouseWheelEvent e) {
		float factor = 1;
		if (e.getWheelRotation() > 0) {
			factor = 1 / 1.15f;
		}
		if (e.getWheelRotation() < 0) {
			factor = 1.15f;
		}

		Point2D.Float pf = coordToDocument(new Point2D.Float(mouseX, mouseY));
		if (artwork.isPointWithin(pf.x, pf.y)) {
			zoomOnPoint(getZoom() * factor, mouseX, mouseY);
		} else {
			zoomOnPoint(getZoom() * factor, offsetX + (int) (artwork.width * zoom / 2), offsetY
					+ (int) (artwork.height * zoom / 2));
		}
		// FIXME: clean the above code, some coordinates get transformed multiple times for nothing
	}