I've also ran this comparison on OSX with the same conclusion as on windows. use start/end frame synchronization. With chrome use gl.readPixels to synchronize with other UAs use gl.finish.
Safari reference without synchronization:
Safari with synchronization. An outstanding example nearly perfect behavior.
Firefox reference without finish.
Firefox with finish:
Chrome reference without finish.
Chrome with finish (gl.readPixels)
I've ran these test as well with the integrated Intel HD GPU. The results are basically the same, although a bit more noisy and the intel driver seems to do some odd scaling things by itself, but the basic method still works.