It's because we process the image.
The OG original has only 10 rows and OXC/OXCE version has 11 or 12 rows (for melee accuracy and mana pool).
Here's how we process it:
// we create extra rows on the soldier stat screens by shrinking them all down one pixel/two pixels.
int rowHeight = _manaEnabled ? 10 : 11;
bool moveOnePixelUp = _manaEnabled ? false : true;
// first, let's do the base info screen
// erase the old lines, copying from a +2 offset to account for the dithering
for (int y = 91; y < 199; y += 12)
for (int x = 0; x < 149; ++x)
_surfaces["BACK06.SCR"]->setPixel(x, y, _surfaces["BACK06.SCR"]->getPixel(x, y + 2));
// drawn new lines, use the bottom row of pixels as a basis
for (int y = 89; y < 199; y += rowHeight)
for (int x = 0; x < 149; ++x)
_surfaces["BACK06.SCR"]->setPixel(x, y, _surfaces["BACK06.SCR"]->getPixel(x, 199));
// finally, move the top of the graph up by one pixel, offset for the last iteration again due to dithering.
if (moveOnePixelUp)
{
for (int y = 72; y < 80; ++y)
for (int x = 0; x < 320; ++x)
{
_surfaces["BACK06.SCR"]->setPixel(x, y, _surfaces["BACK06.SCR"]->getPixel(x, y + (y == 79 ? 2 : 1)));
}
}
You can either make it compatible with that; or I could implement an option to skip processing the source image (easy to do).