--- old/src/java.desktop/share/classes/java/awt/image/Raster.java 2016-03-07 11:49:19.857874541 +0530 +++ new/src/java.desktop/share/classes/java/awt/image/Raster.java 2016-03-07 11:49:19.693874541 +0530 @@ -977,21 +977,36 @@ if (sm instanceof PixelInterleavedSampleModel) { switch(dataType) { case DataBuffer.TYPE_BYTE: - return new ByteInterleavedRaster(sm, db, location); + if (db instanceof DataBufferByte) { + return new ByteInterleavedRaster(sm, db, location); + } + break; case DataBuffer.TYPE_USHORT: - return new ShortInterleavedRaster(sm, db, location); + if (db instanceof DataBufferUShort) { + return new ShortInterleavedRaster(sm, db, location); + } + break; } } else if (sm instanceof SinglePixelPackedSampleModel) { switch(dataType) { case DataBuffer.TYPE_BYTE: - return new ByteInterleavedRaster(sm, db, location); + if (db instanceof DataBufferByte) { + return new ByteInterleavedRaster(sm, db, location); + } + break; case DataBuffer.TYPE_USHORT: - return new ShortInterleavedRaster(sm, db, location); + if (db instanceof DataBufferUShort) { + return new ShortInterleavedRaster(sm, db, location); + } + break; case DataBuffer.TYPE_INT: - return new IntegerInterleavedRaster(sm, db, location); + if (db instanceof DataBufferInt) { + return new IntegerInterleavedRaster(sm, db, location); + } + break; } } else if (sm instanceof MultiPixelPackedSampleModel && dataType == DataBuffer.TYPE_BYTE && @@ -1000,7 +1015,6 @@ } // we couldn't do anything special - do the generic thing - return new SunWritableRaster(sm,db,location); }