uses window size, rather than framebuffer size