Why are you changing the cell padding everytime the size is changed? I think that’s your issue, cell padding is how much space there is between elements and you should just keep it the same. If you want like 5 pixels of space between all elements you would just set the CellPadding once to UDim2.new(0, 0, 0, 5)
I would just update the canvas size and parent normally the elements inside ur scrolling frame, no need to update cell padding, the canvas size line its perfect, what I’ve learn is that sometimes after modifying a scrolling frame layout a simple wait() before updating the canvas helps a lot. for personal experience with scrolling frames I prefer working with offset, in the rest i always use scale