added ability to explicitly set viewport geometry