This is a question of points. Image size and sprite scale as nothing to do with it.
You just want to move a point from a place to another.
An image is drawn over that point, centered on it, with some scaling factors and maybe other geometrical transforms, but we let all of that to SFML deal internally.
We just have to take care of the sprite position. And it's position is actually it's center position in the world, and not the top-left corner.
sprite.SetCenter(width/2, height)
When you do this, it makes that every time you ask the sprite for its position, it will return the position of that point on the world, and not the top left point.
If you scale the image, that point isn't changed. All around the point grows for the sides, and the center keeps the same.
So, if you set center to be sprite's "feet", then it's feet always coincide with sprite's positon, whatever the scale you apply.
SetCenter once, and move it everywhere you want, scale it as much as you would like, that it's position will always be centered on the feet.
Edit: btw, this thread should be moved to Graphics forum :wink: