This is basically a clone of this post that wasn’t tagged as a bug report, it has a lot more detail and a video of the issue:
Create a ScreenGui and put a Frame inside with a size of {1, 0}, {1, 0} (full screen)
Use the TeleportService’s SetTeleportGui function to set the teleport GUI.
Then teleport to another place within the game.
Expected Behavior
The Frame should fill the entire application window as the size is set to {1, 0}, {1, 0}
Actual Behavior
The GUI shrinks up into what appears to be 832x624, fonts also reset. The rest of the application window becomes black.
After user loads into the game, the Frame returns to the correct size and fonts return.
Issue Area: Engine Issue Type: Display Impact: Moderate Frequency: Constantly Date First Experienced: 2022-10-01 00:10:00 (+10:00) Date Last Experienced: 2023-01-20 00:01:00 (+10:00) A private message is associated with this bug report
Bumping this up because this still happens, but also to bring up a workaround.
What I assume is happening is the viewport size is, for some reason, being set to some default value during teleports (or isn’t set to the correct value immediately), so using Scale doesn’t work as expected.
To get around this, if you have one main Frame or something, use Offset based on the camera viewport size, like so:
local tgui = game.ReplicatedStorage.Shared.TeleportGui:Clone()
local vps = workspace.CurrentCamera.ViewportSize
tgui.bg.Size = UDim2.new(0, vps.X, 0, vps.Y)
TeleportService:SetTeleportGui(tgui)
tgui.Parent = player.PlayerGui
Scale can be used on descendants, as long as the main ui element is using Offset.
Fonts still get messed up during teleports however, so there’s no workaround for that.