public void fusionLayers() {
		if (fusionArea.isEmpty()) {
			return;
		}

		mergeOpacityBuffer(curColor, false);

		fusion.clear(fusionArea, 0x00ffffff);
		boolean fullAlpha = true, first = true;
		for (CPLayer l : layers) {
			if (!first) {
				fullAlpha = fullAlpha && fusion.hasAlpha(fusionArea);
			}

			if (l.visible) {
				first = false;
				if (fullAlpha) {
					l.fusionWithFullAlpha(fusion, fusionArea);
				} else {
					l.fusionWith(fusion, fusionArea);
				}
			}
		}

		fusionArea.makeEmpty();
	}