public void paint(Graphics2D g2d) {
    frameNumber++;

    Dimension dimension = getDimension();

    BufferedImage mainStage = createMainStage();
    BufferedImage frame =
        mainStage.getSubimage(0, 48 - frameNumber * 2, dimension.width, dimension.height);
    g2d.drawImage(frame, null, null);
    Color progressbarBackgroundColor = new Color(basicColor);
    Color progressbarShadowStartColor =
        ColorUtils.overwriteAlpha(
            ColorUtils.adjustLightness(progressbarBackgroundColor, 0.7f), 0.6f);
    Color progressbarShadowEndColor =
        ColorUtils.overwriteAlpha(
            ColorUtils.adjustLightness(progressbarBackgroundColor, 0.3f), 0.6f);
    // paint a shadow in the form of semi-transparent gradient
    g2d.setPaint(
        new GradientPaint(0, 0, progressbarShadowStartColor, 0, 7, progressbarShadowEndColor));
    g2d.fillRect(0, 0, dimension.width, 7);
  }