void cropVertically() {
		int oldWidth = width;
		int oldHeight = height;
		int topCrop = 0;
		crop: while (topCrop < height) {
			for (int mx = 0; mx < width; mx++) {
				if (mask[topCrop][mx]) {
					break crop;
				}
			}
			topCrop++;
		}
		int bottomCrop = 0;
		crop: while (bottomCrop < height - topCrop) {
			for (int mx = 0; mx < width; mx++) {
				if (mask[height - bottomCrop - 1][mx]) {
					break crop;
				}
			}
			bottomCrop++;
		}
		if (topCrop != 0 || bottomCrop != 0) {
			boolean[][] newMask = new boolean[height - topCrop - bottomCrop][width];
			System.arraycopy(mask, topCrop, newMask, 0, height - topCrop - bottomCrop);
			mask = newMask;
			y += topCrop;
			height -= topCrop + bottomCrop;
			relativeLineOffset = 0; // qqDPS
			relativeSize = relativeSize * Math.sqrt(width * height) / Math.sqrt(oldWidth * oldHeight);
		}
	}