First person Weapon tool drift

i know there’s been a lot of form posts about this subject but i still cannot fix it, I’ve read this changing it to CFrame.New(0,0.5,0) kinda works but the weapon goes up a bit i wonder if i could somehow use some type of offset to counter it?

(without CFrame.New(0,0.5,0) )

(with CFrame.New(0,0.5,0) )

(the line i use to move the weapon up and down, this is in a renderstep and the motor6d is in the player torso)

player.Character.Torso.ToolGrip.C0 = CFrame.new(0, 0.5, 0) * CFrame.Angles(math.asin((mouse.Hit.p - mouse.Origin.p).unit.y), 0, 0)