IIRC, the chain of transforms that comes out of the scenegraph that is (-1 to 1) on the entire canvas, but if the viewport is set to anything other than the complete canvas, then a correction is needed in order to get to ND coordinates (which are (-1 to 1) on the viewport, not the canvas).