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

        ComponentSampleModel csm;
        csm = (ComponentSampleModel) wr.getSampleModel();

        final int width = wr.getWidth();

        final int scanStride = csm.getScanlineStride();
        final int pixStride = csm.getPixelStride();
        final int[] bandOff = csm.getBandOffsets();

        DataBufferByte db = (DataBufferByte) wr.getDataBuffer();
        final int base
                = (db.getOffset() +
                csm.getOffset(wr.getMinX() - wr.getSampleModelTranslateX(),
                        wr.getMinY() - wr.getSampleModelTranslateY()));

        int aOff = bandOff[bandOff.length - 1];
        int bands = bandOff.length - 1;

        // Access the pixel data array
        final byte[] pixels = db.getBankData()[0];
        for (int y = 0; y < wr.getHeight(); y++) {
            int sp = base + y * scanStride;
            final int end = sp + width * pixStride;
            while (sp < end) {
                int a = pixels[sp + aOff] & 0xFF;
                if (a == 0) {
                    for (int b = 0; b < bands; b++)
                        pixels[sp + bandOff[b]] = (byte) 0xFF;
                } else if (a < 255) {         // this does NOT include a == 255 (0xff) !
                    int aFP = (0x00FF0000 / a);
                    for (int b = 0; b < bands; b++) {
                        int i = sp + bandOff[b];
                        pixels[i] = (byte) (((pixels[i] & 0xFF) * aFP) >>> 16);
                    }
                }
                sp += pixStride;
            }
        }
    }