private void makeHighlightImage() {
		if (highlightStrokes.size() > 0) {
			// make a bounding box of all the strokes to limit the size of the
			// image
			highlightBox = new BoundingBox(highlightStrokes.get(0).getBoundingBox().x, 
					highlightStrokes.get(0).getBoundingBox().y,
					highlightStrokes.get(0).getBoundingBox().x
					+ highlightStrokes.get(0).getBoundingBox().width,
					highlightStrokes.get(0).getBoundingBox().y
							+ highlightStrokes.get(0).getBoundingBox().height);
			for (Stroke stroke : highlightStrokes) {
				BoundingBox.union(stroke.getBoundingBox(), highlightBox,
						highlightBox);
			}

			// inflate the bounding box a few pixels to accommodate blurring
			highlightBox.x -= 10;
			highlightBox.y -= 10;
			highlightBox.width += 20;
			highlightBox.height += 20;

			highlightImage = new BufferedImage((int) highlightBox.width,
					(int) highlightBox.height, BufferedImage.TYPE_INT_ARGB);

			Graphics2D g2 = (Graphics2D) highlightImage.getGraphics();

			g2.setColor(HIGHLIGHT_COLOR);
			g2.setStroke(highlightStroke);

			for (Stroke stroke : highlightStrokes) {
				Stroke newStroke = new Stroke();

				for (Point p : stroke.getPoints()) {
					newStroke.addPoint(new Point(p.getX() - highlightBox.x, p
							.getY() - highlightBox.y));
				}

				ShapePainter.draw(g2, QuadPath.buildQuadPath(newStroke));
			}

		}
	}