Have you compared the internal workings of Surface.Draw and Surface.BltFast ( stepped through the code )?

It sounds like some kind of "repaint" message is not being fired when Surface.Draw is used, while it is being fired when Surface.BltFast is used. Compare the 2 lots of code and see if there is anything major that sticks out.

Same may be the case for DrawAlaha.