Some wined3d git archaeology suggests that the wined3d_context_gl_apply_blit_state() call was added right before Wine 1.2 to workaround various driver issues with glReadPixels() that in practice was erroneously affected by some GL states. If those kind of issues are still a thing, it might be necessary to reintroduce some limited state reset, possibly tied to a quirk.
I'll try this on my r200 GPU together with the dx7 sdk samples. This was the driver for which I wrote a lot of those workarounds back then, although it certainly wasn't the only one. I'd hope Mesa's higher level abstraction layers nowadays fixed this even if r200 wasn't touched much in many years.
Afair glDrawPixels was the one where rendering was broken. glReadPixels was merely slow (like, 10 seconds for one frame) or caused an X server crash or kernel panic.