I do not profess to know QB64 well so please do not laugh at my suggestions...
I looked at you code and you are drawing the ship's shadow 'on the fly' (no pun intended). So, I have to assume that, if you change the colour of the shadow then THAT colour, no mater where it exists on the screen, will be changed as well. Would that be a fair assumption?
You have, as far as "I" can see, one of three options. 1. No shadow or 2. Use a "unique" colour for the shadow or 3. Create a 49x49 semi transparent shadow sprite and pre load it at startup.
I am not familiar with QB's draw commands. Otherwise I would recreate it using Gimp and modify the alpha of the sprite.
When I mentioned 'unique' I did not mean that if the shadow colour is _rgb32(0,0,0) then change it to _rgb32(1,1,1). Perhaps start with a dark gray _rgb32(32,32,32). (poor example as you use random 'grey') But you get what I mean, right?
Also another thing in regards to colour... You have setup your program screen as 32 bit, yet the ONLY references to RGB32 exist on lines 487 and 517 (grey) and all others are RGB
I experimented on the Asteroids shadows. Firstly, although your screen is 32 bit, all but one of the Asteroid shadows colour mode was 'indexed' and not RGB. Copied all Asteroid shadows. Modified all of them to a mode of RBG and reduced their opacity to 70%. Ran the program. Bingo! translucent shadows! Square shaped. But translucent none the less. I cannot explain why the shadow is a square. I will attempt to attach the asteroids. Obviously use them to test a proof of concept... lol unless you want to use square asteroids... lol
I hope I'm making sense... It's 0840 and I haven't had my coffee yet...
J
ps: Threw together a crude ship shadow from a screen capture. It's set to 70% opacity...