private void updateLcd() {
        if (getSkinnable().isTextMode() && Lcd.LcdFont.LCD != getSkinnable().getValueFont()) {
            text.setText(getSkinnable().getText());
        } else {
            switch (getSkinnable().getNumberSystem()) {
                case HEXADECIMAL:
                    text.setText(Integer.toHexString((int) getSkinnable().getCurrentValue()).toUpperCase());
                    break;
                case OCTAL:
                    text.setText(Integer.toOctalString((int) getSkinnable().getCurrentValue()).toUpperCase());
                    break;
                case DECIMAL:
                default:
                    text.setText(formatLcdValue(getSkinnable().getCurrentValue(), getSkinnable().getDecimals()));
                    break;
            }
        }
        if (isNoOfDigitsInvalid()) {
            text.setText("-E-");
        }

        updateBackgroundText();

        // Visualize the lcd semitransparent background text
        if (getSkinnable().isUnitVisible()) {
            backgroundText.setX(width - 2 - backgroundText.getLayoutBounds().getWidth() - valueOffsetRight);
        } else {
            backgroundText.setX((width - backgroundText.getLayoutBounds().getWidth()) - valueOffsetRight);
        }
        backgroundText.setY(height - (backgroundText.getLayoutBounds().getHeight() * digitalFontSizeFactor) * 0.5);

        if (getSkinnable().isUnitVisible()) {
            text.setX((width - 2 - text.getLayoutBounds().getWidth()) - valueOffsetRight);
        } else {
            text.setX((width - text.getLayoutBounds().getWidth()) - valueOffsetRight);
        }

        // Update the title
        title.setText(getSkinnable().getTitle());
        title.setX((width - title.getLayoutBounds().getWidth()) * 0.5);

        // Update the upper left text
        upperLeftText.setText(getSkinnable().isMinMeasuredValueVisible() ? formatLcdValue(getSkinnable().getMinMeasuredValue(), getSkinnable().getMinMeasuredValueDecimals()) : getSkinnable().getUpperLeftText());
        if (upperLeftText.getX() + upperLeftText.getLayoutBounds().getWidth() > title.getX()) {
            upperLeftText.setText("...");
        }

        // Update the upper right text
        upperRightText.setText(getSkinnable().isMaxMeasuredValueVisible() ? formatLcdValue(getSkinnable().getMaxMeasuredValue(), getSkinnable().getMaxMeasuredValueDecimals()) : getSkinnable().getUpperRightText());
        upperRightText.setX(width - upperRightText.getLayoutBounds().getWidth() - 0.0416666667 * height);
        if (upperRightText.getX() < title.getX() + title.getLayoutBounds().getWidth()) {
            upperRightText.setText("...");
            upperRightText.setX(width - upperRightText.getLayoutBounds().getWidth() - 0.0416666667 * height);
        }

        // Update the lower center text
        lowerCenterText.setText(getSkinnable().isFormerValueVisible() ? formatLcdValue(getSkinnable().getFormerValue(), getSkinnable().getDecimals()) : getSkinnable().getLowerCenterText());
        lowerCenterText.setX((width - lowerCenterText.getLayoutBounds().getWidth()) * 0.5);

        // Update the lower right text
        lowerRightText.setText(getSkinnable().isNumberSystemVisible() ? getSkinnable().getNumberSystem().toString() : getSkinnable().getLowerRightText());
        lowerRightText.setX(width - lowerRightText.getLayoutBounds().getWidth() - 0.0416666667 * height);
        lowerRightText.setY(main.getLayoutY() + height - 3 - 0.0416666667 * height);
        if (lowerRightText.getX() < lowerCenterText.getX() + lowerCenterText.getLayoutBounds().getWidth()) {
            lowerRightText.setText("...");
            lowerRightText.setX(width - lowerRightText.getLayoutBounds().getWidth() - 0.0416666667 * height);
        }

        // Update battery charge
        if (getSkinnable().getBatteryCharge() < 0.01) {
            battery.getStyleClass().setAll("battery-empty");
        } else if (getSkinnable().getBatteryCharge() < 0.06) {
            battery.getStyleClass().setAll("battery-almost-empty");
        } else if (getSkinnable().getBatteryCharge() < 0.26) {
            battery.getStyleClass().setAll("battery-25");
        } else if (getSkinnable().getBatteryCharge() < 0.51) {
            battery.getStyleClass().setAll("battery-50");
        } else if (getSkinnable().getBatteryCharge() < 0.76) {
            battery.getStyleClass().setAll("battery-75");
        } else if (getSkinnable().getBatteryCharge() < 0.96) {
            battery.getStyleClass().setAll("battery-almost-full");
        } else {
            battery.getStyleClass().setAll("battery-full");
        }

        // Update signal strength
        if (getSkinnable().getSignalStrength() < 0.06) {
            signal.getStyleClass().setAll("signal", "signal-0");
        } else if (getSkinnable().getSignalStrength() < 0.26) {
            signal.getStyleClass().setAll("signal", "signal-25");
        } else if (getSkinnable().getSignalStrength() < 0.51) {
            signal.getStyleClass().setAll("signal", "signal-50");
        } else if (getSkinnable().getSignalStrength() < 0.85) {
            signal.getStyleClass().setAll("signal", "signal-75");
        } else {
            signal.getStyleClass().setAll("signal", "signal-100");
        }
    }