When reading an interlaced image with a bit depth less than 8, png_progressive_combine_row will use the "sparkle" technique for interlace passes 3 and 5. I would expect it to use the block method for every pass.
This change was introduced in the git revision 4e68aa7 where significant changes were made to png_combine_row.
I'm fairly confident that the attached patch will fix this issue, but I am not deeply familiar with the libpng source.
Fixed in libpng-1.5.19beta03 and 1.6.11beta03 and (GIT only for now) libpng-1.7.0beta35. Thanks.
Fixed in libpng-1.6.11, thanks.