First of all, TransformToXxx functions can't return a wrong result as they simply use the same matrix which is used to draw the object.
The output is correct, SetPosition sets the position of the center of the sprite. So, your new center (20, 20) will map to (0, 0) and (0, 0) will map to (-20, -20).