some viewport and framebuffer work