protected final void checkPaint() {
		checkGC();

		if (currentState.fgColor != null) {
			if (!currentState.fgColor.equals(appliedState.fgColor)
					&& currentState.fgPattern == null) {
				gc.setForeground(appliedState.fgColor = currentState.fgColor);
			}
		}

		LineAttributes lineAttributes = currentState.lineAttributes;
		if (!appliedState.lineAttributes.equals(lineAttributes)) {
			if (getAdvanced()) {
				gc.setLineAttributes(lineAttributes);
			} else {
				gc.setLineWidth((int) lineAttributes.width);
				gc.setLineCap(lineAttributes.cap);
				gc.setLineJoin(lineAttributes.join);
				gc.setLineStyle(lineAttributes.style);
				if (lineAttributes.dash != null) {
					gc.setLineDash(convertFloatArrayToInt(lineAttributes.dash));
				}
			}
			appliedState.lineAttributes = clone(lineAttributes);
		}

		if (!currentState.bgColor.equals(appliedState.bgColor)
				&& currentState.bgPattern == null) {
			gc.setBackground(appliedState.bgColor = currentState.bgColor);
		}
	}