The desktop width() method seems to always work for me.
Actually I will try compiling your source code with my own set display mode command.
So, I compiled your code after downloading the txt.ttf font from your other post.
I do see what you are talking about, it is not a refresh problem.
What you are seeing is called video tearing.
Everything on the game screen is refreshing at the same rate, on my laptop it is 480fps.
My laptop screen refresh rate is 60fps, so the game refresh rate (frames per second) is out of sync with my laptop screen refresh, which causes the tearing that you are seeing.
Actually the asteroid backdrop also tears the same way, just less visible.
So if you will put this: set display mode desktop width(),desktop height(),32,1
at the top of your code, the tearing will go away.
The 1 at the end causes the game to VSYNC to the computer screens refresh rate.
Unfortunately, this will cause your game loops to run at the computers screen refresh rate, in my case 60fps.
In most cases 60 loops through your game code/per second is fast enough.
If you want more loops through your game code check out the decouple the display loop discussion if the DBPro forum, but it is a little more advanced technique, but not too bad.
http://forum.thegamecreators.com/?m=forum_view&t=175312&b=1
I think you will be fine just setting the VSync setting in the set display mode to 1 for now.
BTW, nice work on your game!