disallow scrolling down past the start of text

we leave 100 pixels above.

Also update the drawing code to show a top margin and have the existing
margin start at the start of text.
fix drawing bugs

the last change introduced a bug and pointed to the core issue that the
margins were being drawn inside the textblock loop.

Now we draw them both only once.
more todos