changed handling of Viewports to support multiple calls to glViewport