glViewport with negative args was not portable; replaced it with a proper projection matrix.