public void Fill(int x, int y, int fillColor, int colorClicked) {
		// create queue of points that will store all the points to be filled
		Queue<Point> queue = new LinkedList<Point>();
		// start the fill at the clicked point
		queue.add(new Point(x, y));

		while (!queue.isEmpty()) {
			Point p = queue.remove();
			// bounds check and color check
			if (validCoordinate(p.x, p.y)) {
				int pixelColor = image.getRGB(p.x, p.y);
				if (pixelColor != fillColor && pixelColor == colorClicked) {
					image.setRGB(p.x, p.y, fillColor);
					if (validCoordinate(p.x - 1, p.y)) {
						queue.add(new Point(p.x - 1, p.y));
					}
					if (validCoordinate(p.x + 1, p.y)) {
						queue.add(new Point(p.x + 1, p.y));
					}
					if (validCoordinate(p.x, p.y - 1)) {
						queue.add(new Point(p.x, p.y - 1));
					}
					if (validCoordinate(p.x, p.y + 1)) {
						queue.add(new Point(p.x, p.y + 1));
					}

					// System.out.println(queue.peek());
				}
			}
		}
	}