Basically the framebuffer size was different from the glViewport size. This made the depth read in glReadPixel not corresponding to the center of the pixel. Another thing that reduced precision compared to blender 2.79 is the `GPU_matrix_unproject` that now computes using `float`s instead of `double`s. But this may be for another commit.