private static RenderedImage applyPalette(RenderedImage canvas) {
if (!(canvas.getColorModel() instanceof IndexColorModel)) {
// try to force a RGBA setup
ImageWorker imageWorker = new ImageWorker(canvas);
RenderedImage image = imageWorker.rescaleToBytes().forceComponentColorModel()
.getRenderedImage();
ColorIndexer indexer = new Quantizer(256).subsample().buildColorIndexer(image);
// if we have an indexer transform the image
if (indexer != null) {