This happens to be a partial revert of 9069913dbba0914b80544ce4afb9e7285efad2a5. It looks correct, my guess is that I was confused by the fetch functions requiring the (source) pitch in pixels while the compression function wants the (destination) pitch in bytes. It might be a good idea to check that this MR doesn't regress https://bugs.winehq.org/show_bug.cgi?id=47862 - good chance that the game from that bug doesn't use compression at all.