finally got around to refactoring the graphics api to make porting it to new boards easier (and fixing the messy oversampling/vertical_snake_transform stuff)