--- old/src/java.desktop/share/classes/com/sun/imageio/plugins/png/PNGImageReader.java 2018-11-16 15:25:07.899431000 +0530 +++ new/src/java.desktop/share/classes/com/sun/imageio/plugins/png/PNGImageReader.java 2018-11-16 15:25:07.535431000 +0530 @@ -1163,8 +1163,7 @@ // same bit depth as the source data boolean adjustBitDepths = false; int[] outputSampleSize = imRas.getSampleModel().getSampleSize(); - int numBands = outputSampleSize.length; - for (int b = 0; b < numBands; b++) { + for (int b = 0; b < inputBands; b++) { if (outputSampleSize[b] != bitDepth) { adjustBitDepths = true; break; @@ -1177,8 +1176,8 @@ if (adjustBitDepths) { int maxInSample = (1 << bitDepth) - 1; int halfMaxInSample = maxInSample/2; - scale = new int[numBands][]; - for (int b = 0; b < numBands; b++) { + scale = new int[inputBands][]; + for (int b = 0; b < inputBands; b++) { int maxOutSample = (1 << outputSampleSize[b]) - 1; scale[b] = new int[maxInSample + 1]; for (int s = 0; s <= maxInSample; s++) { @@ -1304,7 +1303,7 @@ passRow.getPixel(newSrcX, 0, ps); if (adjustBitDepths) { - for (int b = 0; b < numBands; b++) { + for (int b = 0; b < inputBands; b++) { ps[b] = scale[b][ps[b]]; } }