private Line2D canonicalToScreen(Line2D line) {

		double[][] start = multiply(combined, new double[][] {
				{ line.getX1() }, { line.getY1() }, { 1 } });

		double[][] end = multiply(combined, new double[][] { { line.getX2() },
				{ line.getY2() }, { 1 } });

		return new Line2D.Double(new Point2D.Double(start[0][0], start[1][0]),
				new Point2D.Double(end[0][0], end[1][0]));
	}