GLdouble modelview[16];
glGetDoublev( GL_MODELVIEW_MATRIX, modelview );
GLdouble projection[16];
glGetDoublev( GL_PROJECTION_MATRIX, projection );
GLint viewport[4];
glGetIntegerv( GL_VIEWPORT, viewport );
GLfloat winX, winY, winZ;
GLdouble posX, posY, posZ;
winX = (float)screenX;
winY = (float)viewport[3] - (float)screenY;
glReadPixels( screenX, int(winY), 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ );
// winZ hase NOW wrong value!
gluUnProject( winX, winY, winZ, modelview, projection, viewport, &posX, &posY, &posZ);