I have two frames, one parented to a CanvasGroup called Fill and another parented outside of it called Measure. Fill scales upward and downward in the CanvasGroup, while Measure finds the top edge position of Fill. So, Measure is expected to be always at the top edge of Fill. It works as expected when the player doesn’t move the camera, but when you begin zooming in and out or moving the camera that’s when Measure will move faster or slower or vice versa.
https://gyazo.com/8ed1cab23580e1b5bcd8bebf4f8c115c
Initially I thought it was the way I was finding the top edge position of Fill, which may still end up being true. To find the top edge position of Fill, I increase it by the increment that Fill scales up and down by. I’ve tried another method where I have an invisible frame parented to Fill which would always be located at the top edge of Fill, and then I would set Measures position to the frames position, but I still get the same results. Currently, all the descendants of BillboardGui use Scale for both positioning and sizing.