@axled, Hi, welcome to the forum!
This looks like a problem with the controller of your display. But it might also be an error in GxEPD2.
Did you test with GxEPD2_Example.ino, and do the partial updates work correctly in all 4 rotations?
I am currently busy with other work. So I have no time for detective work.
If you can provide a minimal example that shows the effect, either I or an other user could verify.
The minimum example should not use any other library or resources, and clearly show what works correctly and what doesn't.
Please also read How to get the best out of this forum if you haven't done yet.
Jean-Marc
About the versions
The 2.9inch e-Paper (B) raw panel was updated to the V3 version. The controller and the driver codes are different and the codes of the two versions are not compatible with each other. Except for the software, the outline of the two versions is the same. If you are the regulars of this display, please note that you need to update your driver codes with the new version refer to our new examples for the V3 version. if your the first time buy and use this display, just need to download and use the new V3 examples. The V2 version has a "V3" sticker on the backside of the display panel. Please confirm the version by the sticker.
Maybe it is not supported in GxEPD2. Did you try with all 3 versions?
//#define GxEPD2_DRIVER_CLASS GxEPD2_290c // GDEW029Z10 128x296, UC8151 (IL0373)
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_Z13c // GDEH029Z13 128x296, UC8151D
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_C90c // GDEM029C90 128x296, SSD1680