If get_parent() has a non-zero position, you will have offset issues. You could make the fireballs children of a Node Node, so that their position is always global.
You could try
fireball.global_position = get_node("Position2D").get_global_position().
If it still does not work, and the bullets spawn with a constant offset, check that the Sprite etc all have a position of zero in their scene.