oh, right, I should have given more info… 
win2ksp4, jre1.5.0 (which is not reported to have that bug), source image is built like this:
palette = new IndexColorModel(8, 256, palR, palG, palB, 0);
imageData = new byte[imageBytes];
model = new MultiPixelPackedSampleModel(DataBufferInt.TYPE_BYTE, this.pcxwidth, this.pcxheight, 8);
buffer = new DataBufferByte(imageData, imageBytes);
raster = WritableRaster.createWritableRaster(model, buffer, zeropoint);
new BufferedImage(palette, raster, false, null);
the transform can be any with non-null shear or scale values:
AffineTransform gt = new AffineTransform();
gt.translate (0, bi.getHeight());
gt.scale (1, -1d);
g.transform (gt);
g.drawImage (image, null, null);
the flipping destination image is the code from the jumping into jogl tutorial (I think that’s what it was called), to get a drawPixels() compatible raster
raster = Raster.createInterleavedRaster (DataBuffer.TYPE_BYTE, bi.getWidth(), bi.getHeight(), 4, null);
colorModel= new ComponentColorModel (ColorSpace.getInstance(ColorSpace.CS_sRGB), new int[] {8,8,8,8}, true, false, ComponentColorModel.TRANSLUCENT, DataBuffer.TYPE_BYTE);
new BufferedImage (colorModel,
raster, false, null);
heh, seems to be more or less the same as in the bug report… tries the workaround
\ edit
forgot to mention, it’s the same problem if srcImg == dstImg
Graphics2D g = bi.createGraphics();
AffineTransform gt = new AffineTransform();
gt.translate (0, bi.getHeight());
gt.scale (1, -1d);
g.transform (gt);
g.drawImage(bi, null, null);
or
g.drawImage(bi, gt, null);