add dynamic viewport buffering for tiles, and fix some issues with smooth scrolling