Problems reading the z-buffer

Hello all,
I’m trying to read the depth buffer in order to perform some visibility test.
I’m using OpenTK and I’m reading the z-buffer as follows

Dim depthBuffer(mScreenWidth * mScreenHeight - 1) As Single
Dim hDepthBuffer As GCHandle = GCHandle.Alloc(depthBuffer, GCHandleType.Pinned)
Dim pDepthBuffer As IntPtr = hDepthBuffer.AddrOfPinnedObject()
GL.ReadBuffer(ReadBufferMode.Back)
GL.PixelStore(PixelStoreParameter.PackAlignment, 1)        
GL.ReadPixels(0, 0, mScreenWidth, mScreenHeight, PixelFormat.DepthComponent, PixelType.Float, pDepthBuffer)

However, I’m having problems when using the NVIDIA GeForce GT 740M/PCIe/SSE2:

https://www.dropbox.com/s/vywukj0ishdgdkm/nvidia.PNG
https://www.dropbox.com/s/5k5vsu4avc1ie8n/nvidia2.PNG

while the result is as expected when I use the integrated Intel card

https://www.dropbox.com/s/z806ynqcgb17amo/intel2.PNG
https://www.dropbox.com/s/gnsxkvj4ehmm477/intel.PNG

Here the red dots are obtained taking the pixel position (x,y) and imposing the corresponding z-buffer height and then coordinates are transofrmed from screen units to world units. Anyway the problem is already present before all these transformations as soon as the z-buffer is read.

The graphic cards specifics are

Vendor: NVIDIA Corporation
Renderer: GeForce GT 740M/PCIe/SSE2
OpenGL version: 4.4.0
Shading Language version: 4.40 NVIDIA via Cg compiler
Color format: 32 (8888)
Z-buffer depth: 24
Stencil buffer bits: 8
Sample buffers: 1
Samples: 4

and

Vendor: Intel
Renderer: Intel® HD Graphics 4000
OpenGL version: 4.0.0 - Build 9.17.10.2867
Shading Language version: 4.00 - Build 9.17.10.2867
Color format: 32 (8888)
Z-buffer depth: 24
Stencil buffer bits: 8
Sample buffers: 1
Samples: 4

Any idea on what could be wrong?

Thanks!

Silvia