public static Image getPrintImage(Image image, Color bgColor) {
    Image newImage = (Image) iconCashe.get(image);
    if (newImage == null) {
      ImageData imageData = image.getImageData();
      ImageData imgData = (ImageData) imageData.clone();
      ImageData mask = imgData.getTransparencyMask();
      int bgPixelValue = imgData.palette.getPixel(bgColor.getRGB());

      for (int x = 0; x < mask.width; x++) {
        for (int y = 0; y < mask.height; y++) {
          int pixelValue = mask.getPixel(x, y);
          if (pixelValue == 0) {
            imgData.setPixel(x, y, bgPixelValue);
          }
        }
      }
      imgData.maskData = null;

      newImage = new Image(null, imgData);
      iconCashe.put(image, newImage);
    }

    return newImage;
  }