Probably application bug: it called DIB_DirectDrawSurface_Blt with .bottom > 36000, seems like DirectDraw sanitized the values.
Well, I would prefer the fix to be different... For example, it seems to be valid to have negative top values as long as 'bottom - top' is valid (as it seems that DDraw will clip the blit for you).
Problem is that if negative top is valid, then bottom being bigger than dwHeight should be valid too. And your patch will thus prevent this case to work.
Did you try to simply return an error message (instead of doing the assert) to see if you see any graphical glitches ?
Anyway, I am installing Mingw + the DirectX SDKs to do some test apps on a Win2K laptop. I will try this case to see if I manage to see what real Windows does.
Lionel