private void initGraphics() {                        
        innerShadow = new InnerShadow(BlurType.TWO_PASS_BOX, Color.rgb(0, 0, 0, 0.65), PREFERRED_HEIGHT * 0.1, 0, 0, 0);
        Color color = gradientLookup.getColorAt(getSkinnable().getValue() / (getSkinnable().getMaxValue() - getSkinnable().getMinValue())); 
        background = new Circle(0.5 * PREFERRED_WIDTH, 0.5 * PREFERRED_HEIGHT, 0.5 * PREFERRED_WIDTH);
        background.setFill(new LinearGradient(0, 0, 0, PREFERRED_HEIGHT,
                                              false, CycleMethod.NO_CYCLE,
                                              new Stop(0, color.deriveColor(0, 1, 0.8, 1)),
                                              new Stop(1, color.deriveColor(0, 1, 0.6, 1))));
        background.setEffect(innerShadow);

        ticksCanvas = new Canvas(PREFERRED_WIDTH, PREFERRED_HEIGHT);
        ticksCanvas.setMouseTransparent(true);
        ticks = ticksCanvas.getGraphicsContext2D();

        targetIndicator = new Region();
        targetIndicator.getStyleClass().setAll("target-indicator");
        targetIndicatorRotate = new Rotate(180 - getSkinnable().getStartAngle() - getSkinnable().getMinValue() * angleStep);
        targetIndicator.getTransforms().setAll(targetIndicatorRotate);       
        targetExceeded = false;
        targetIndicator.setVisible(getSkinnable().isTargetEnabled());

        valueIndicator = new Region();
        valueIndicator.getStyleClass().setAll("value-indicator");
        valueIndicatorRotate = new Rotate(180 - getSkinnable().getStartAngle());
        valueIndicatorRotate.setAngle(valueIndicatorRotate.getAngle() + (getSkinnable().getValue() - getSkinnable().getOldValue() - getSkinnable().getMinValue()) * angleStep);
        valueIndicator.getTransforms().setAll(valueIndicatorRotate);

        infoText = new Text(getSkinnable().getInfoText().toUpperCase());
        infoText.setTextOrigin(VPos.CENTER);
        infoText.setFont(Fonts.opensansSemiBold(0.06 * PREFERRED_HEIGHT));
        infoText.setMouseTransparent(true);
        infoText.getStyleClass().setAll("info-text");        

        value = new Text(String.format(Locale.US, "%." + getSkinnable().getDecimals() + "f", getSkinnable().getValue()));
        value.setMouseTransparent(true);
        value.setTextOrigin(VPos.CENTER);
        value.setFont(Fonts.opensansBold(0.32 * PREFERRED_HEIGHT));
        value.setMouseTransparent(true);
        value.getStyleClass().setAll("value");

        // Add all nodes
        pane = new Pane();
        pane.getChildren().setAll(background,                                  
                                  ticksCanvas,
                                  valueIndicator,
                                  targetIndicator,
                                  infoText,
                                  value);
        
        getChildren().setAll(pane);
    }