more accurate GetTextSize
cleanup
more work and cleanup