I'm not knocking what you've created, but if you did all of that because StretchBlt is causing distortion, you must be doing something wrong. I've never had StretchBlt perform unsatisfactorily, except maybe for speed. Then I found a workaround for that.

Did you SetStretchBltMode?