That's right, mIRC uses an internal bitmap and blits it to the window when necessary. I considered adding an .hbm property at one point to allow scripts direct access to the bitmap, however that would not have worked very well since your updates to the bitmap would not have been synchronized with mIRC's own updates.
The only solution I can think of would be for mIRC to add a bitmap update event for @windows. mIRC would update the bitmap, trigger an event to allow you to modify the bitmap, and then paint the result. That said, the /drawing commands update a number of internal variables regarding each bitmap, so that would also be problematic.