clientX/Y, pageX/Y and screenX/Y

Click on the page to set the three test layers.

Zoom factor: .

This test interprets the coordinates as page coordinates (i.e. pageX/Y). I calculate the expected positions as follows:

Relative to the document
Old definition: relative to the visual viewport
clientX/Y = pageX/Y - window.pageX/YOffset
New definition: relative to the layout viewport
clientX/Y = pageX/Y - document.documentElement.getBoundingClientRect().left/top
What changed here in Chromium 40/Edge is not so much the definition of clientX/Y, but of getBoundingClientRect(), probably because the layout viewport as a separate scrollable layer was introduced.
Very old defintion: relative to the screen, in device pixels. But only BB10 does that.
screenX/Y = clientX/Y * devicePixelRatio * zoom,
where zoom = documentElement.clientWidth / window.innerWidth
Many browsers make it the same as page or client
Chrome makes it relative to the screen BUT IN CSS PIXELS, and for vertical measurements you have to subtract the toolbars as well.