protected static void mult_INT_PACK_Data(WritableRaster wr) {
        // System.out.println("Multiply Int: " + wr);

        SinglePixelPackedSampleModel sppsm;
        sppsm = (SinglePixelPackedSampleModel) wr.getSampleModel();

        final int width = wr.getWidth();

        final int scanStride = sppsm.getScanlineStride();
        DataBufferInt db = (DataBufferInt) wr.getDataBuffer();
        final int base
                = (db.getOffset() +
                sppsm.getOffset(wr.getMinX() - wr.getSampleModelTranslateX(),
                        wr.getMinY() - wr.getSampleModelTranslateY()));
        // Access the pixel data array
        final int[] pixels = db.getBankData()[0];
        for (int y = 0; y < wr.getHeight(); y++) {
            int sp = base + y * scanStride;
            final int end = sp + width;
            while (sp < end) {
                int pixel = pixels[sp];
                int a = pixel >>> 24;
                if ((a >= 0) && (a < 255)) {   // this does NOT include a == 255 (0xff) !
                    pixels[sp] = ((a << 24) |
                            ((((pixel & 0xFF0000) * a) >> 8) & 0xFF0000) |
                            ((((pixel & 0x00FF00) * a) >> 8) & 0x00FF00) |
                            ((((pixel & 0x0000FF) * a) >> 8) & 0x0000FF));
                }
                sp++;
            }
        }
    }