use a scrollable gl canvas instead of a single big buffer