int array para BufferedImage

Estou fazendo com oRobot class um printscreen e eu converto o BufferedImage em um array int. Então eu quero converter o array int de volta para um bufferedimage, mas isso dá um erro. Este é o meu código:

Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
BufferedImage printscreen = robot.createScreenCapture(new Rectangle(screen));
int[] pixels = ((DataBufferInt) printscreen.getRaster().getDataBuffer()).getData();

BufferedImage image = new BufferedImage(screen.width, screen.height, BufferedImage.TYPE_INT_RGB);
WritableRaster raster = (WritableRaster) image.getRaster();
raster.setPixels(0, 0, screen.width, screen.height, pixels);

Mas eu recebo o erro:ArrayIndexOutOfBoundsException: 2073600 mas por que?

Estou recebendo a exceção nesta linha:

raster.setPixels(0, 0, screen.width, screen.height, pixels);

EDIT: Ele está funcionando se eu alterar o segundo tipo de bufferedimage para TYPE_BYTE_GRAY.

questionAnswers(5)

yourAnswerToTheQuestion