I believe there is a bug in GetBoundFor that might exaggerate the problems with sorting: the Ymin and Ymax overwrite the previous error instead of adding to it.
1 2 | SpriteBound.YMin = -0.5f*Height; SpriteBound.YMax = 0.5f*Height; |
should be
1 2 | SpriteBound.YMin += -0.5f*Height; SpriteBound.YMax += 0.5f*Height; |
Happy coding,
Mox