Jim & Kevin, Please review the marlin-FX webrev: http://cr.openjdk.java.net/~lbourges/marlinFX/marlinFX-8170140.0/ JBS: https://bugs.openjdk.java.net/browse/JDK-8170140
Ths bug fix seems very simple in MaskMarlinAlphaConsumer: + // ensure last block flag = 0 to process final block:+ blkFlags[blkE] = 0; But it is less easy to explain: In Renderer, the block flags are set by: blkFlags[(pix_xmax + 1) >> _BLK_SIZE_LG] = 1 I recently added +1 that can lead to flag an extra block when pix_xmax is at a block boundary (32 pixels). pix_xmax = x1 >> _SUBPIXEL_LG_POSITIONS_X x1 <= bboxx1 = bbox_spmaxX = pmaxX << SUBPIXEL_LG_POSITIONS_X So pix_xmax is at most equals to pmaxX = bboxX1 = getOutpixMaxX() The added line in MaskMarlinAlphaConsumer ensures that the setAndClearRelativeAlphas() always process the loop that clears and copies the last block of pixels: blkFlags[blkE] = 0 is equivalent to blkFlags[(bboxX1 + 1) >> _BLK_SIZE_LG] = 0 This is quite difficult to explain but it is now correct. I added a test in System tests as it was not working in javafx.graphics tests (Exception in Application constructor) PS: This bug may be the cause of RegionBackgroundFillUITest failures: https://bugs.openjdk.java.net/browse/JDK-8170026 Regards, Laurent