It has to do with where you're placing the origin relative to the scale factor. Take this for example:
SpriteBatch.Draw(myTexture, // Texture
new Vector2(0, 0), // Position
Nothing, // Source rectangle
Color.White, // Color
0, // Rotation
new Vector2(5, 5), // Origin
new Vector2(0.5, 0.5), // Scale
SpriteEffects.None, // Mirroring effect
0.94); // Depth
Here we're drawing at position 0,0
from origin point 5,5
with a scale factor of 0.5, 0.5
, right? And in the following:
SpriteBatch.Draw(myTexture, // Texture
new Vector2(0, 0), // Position
Nothing, // Source rectangle
Color.White, // Color
0, // Rotation
new Vector2(5, 5), // Origin
new Vector2(1, 1), // Scale
SpriteEffects.None, // Mirroring effect
0.94); // Depth
We're now drawing at a scale factor of 1,1
but we're still drawing from the same origin. So instead, you should try something like this:
Vector2 scaleFactor = new Vector2(0.5, 0.5);
Vector2 origin = new Vector2(myTexture.Width / 2 * scaleFactor.X, myTexture.Height / 2 * scaleFactor.Y);
SpriteBatch.Draw(myTexture, // Texture
new Vector2(0, 0), // Position
Nothing, // Source rectangle
Color.White, // Color
0, // Rotation
origin, // Origin
scaleFactor, // Scale
SpriteEffects.None, // Mirroring effect
0.94); // Depth
That way you're expanding from the center of the texture relative to it's current size.
Battle.Texture_SelectionBox
size properties set to what you expect? \$\endgroup\$