I have a grid which in turn has a scroll viewer inside it. It was spilling over its bounds. I had the VerticalOptions set to FillAndExpand, and the single Row Definition set to Star.
I found that if I don't set the VerticalOptions property it behaves correctly. I hope this might help someone else who has the same problem.