I am trying to have the character face the mouse, but when looking up and down with the mouse, the character doesn't face up completely.

local character = script.Parent
local mouse = game.Players.LocalPlayer:GetMouse()

local bodyGyro = Instance.new("BodyGyro")
bodyGyro.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)
bodyGyro.CFrame = CFrame.new(character.Torso.Position, mouse.hit.Position)
bodyGyro.Parent = character.Torso

while true do
	bodyGyro.CFrame = CFrame.new(character.Torso.Position, mouse.hit.Position)
	wait()
end

Turning left and right, front and forward is fine. When trying to make the character face skyward, it makes the character face the ground. Any way around this?