So I made a billboard gui that has a players name and rank in group above their head, but it keeps changing positiong and size as I zoom in and out, how would I make it not change size and stay in the same position?

This is the script:

ID1 = 4949138 

function placeguis(Player)
	ID2 = Player.Name
	wait()
	if Player:IsInGroup(ID1) then
		local gui = Instance.new("BillboardGui")
		gui.Name = "XD"
		gui.MaxDistance = 25
		gui.Parent = Player.Character.Head
		gui.Adornee = Player.Character.Head
		gui.Size = UDim2.new(4,0,2,0)

		gui.StudsOffset = Vector3.new(0,1.95,0)
		local text = Instance.new("TextLabel")
		text.Name = "XDD"
		text.Size = UDim2.new(1,0,1,0)
		text.BackgroundTransparency = 1
		text.Text = (ID2)
		text.Parent = gui
		text.Font = "SourceSansSemibold"
		text.TextSize = 30
        
        local gui2 = Instance.new("BillboardGui")
		gui2.Parent = Player.Character.Head
				gui2.MaxDistance = 25

		gui2.Adornee = Player.Character.Head
		gui2.Size = UDim2.new(4,0,2,0)
		gui2.StudsOffset = Vector3.new(0,1.6,0)
		local text2 = Instance.new("TextLabel")
		text2.Size = UDim2.new(1,0,1,0)
		text2.BackgroundTransparency = 1
		text2.Text = ("" .. Player:GetRoleInGroup(ID1) .. "")
		text2.Parent = gui2
				text2.Font = "Highway"
						text2.TextSize = 20

		text2.TextColor = BrickColor.new("Really black")

		text.TextColor3 = Player.TeamColor.Color
        print ("Both Of Exeptic's Group GUIs Has Been Loaded Into " ..Player.Name.. "'s Character.")
    end
end

function onplayerdeath(Player)
	Player.Changed:connect(function(changedproperty)
		if (changedproperty == "Character") then
			placeguis(Player)
		end
	end)
end

game.Players.PlayerAdded:connect(placeguis)
game.Players.PlayerAdded:connect(onplayerdeath)




local TeamsService = game:GetService("Teams")

for _, team in pairs(TeamsService:GetTeams()) do
    team.PlayerAdded:connect(function(player)
	
		player.Character.Head.XD.XDD.TextColor3 = player.TeamColor.Color


    end)
end

please help!