public PixelMap or(PixelMap rhs) {
		
		int width = pixels.length;
		int height = pixels[0].length;
		int rhsWidth = rhs.pixels.length;
		int rhsHeight = rhs.pixels[0].length;
		int maxWidth = Math.max(pixels.length, rhs.pixels.length);
		int maxHeight = Math.max(pixels[0].length, rhs.pixels[0].length);
		
		boolean[][] result = new boolean[maxWidth][maxHeight];
		
		for(int x = 0; x < maxWidth; ++x) {
			for(int y = 0; y < maxHeight; ++y) {
				if(x < width && y < height) {
					if(x < rhsWidth && y < rhsHeight) {
						result[x][y] = pixels[x][y] || rhs.pixels[x][y];
					}
					else {
						result[x][y] = pixels[x][y];
					}
				}
				else if(x < rhsWidth && y < rhsHeight) {
					result[x][y] = rhs.pixels[x][y];
				}
				else {
					result[x][y] = false;
				}
			}
		}
		
		return new PixelMap(result);
	}