To reproduce: 1. Add a RadPropertyGrid and populate it with all of of items by using the following code: this.radPropertyGrid1.SelectedObject = this; 2. Expand two items. 3. Scroll to the bottom. 4. Scroll to the top. 5. If you scroll to the bottom again, you will see a lot of empty space. The attached gif file illustrates better the problem. Workaround: public Form1() { InitializeComponent(); this.radPropertyGrid1.SelectedObject = this; this.radPropertyGrid1.PropertyGridElement.PropertyTableElement.Scroller.Traverser = new CustomPropertyGridTraverser(this.radPropertyGrid1.PropertyGridElement.PropertyTableElement); } public class CustomPropertyGridTraverser : PropertyGridTraverser { public CustomPropertyGridTraverser(PropertyGridTableElement propertyGridElement) : base(propertyGridElement) { } public int Index { get { FieldInfo fi = typeof(PropertyGridTraverser).GetField("index", BindingFlags.NonPublic | BindingFlags.Instance); return int.Parse(fi.GetValue(this).ToString()); } set { FieldInfo fi = typeof(PropertyGridTraverser).GetField("index", BindingFlags.NonPublic | BindingFlags.Instance); fi.SetValue(this, value); } } public int GroupIndex { get { FieldInfo fi = typeof(PropertyGridTraverser).GetField("groupIndex", BindingFlags.NonPublic | BindingFlags.Instance); return int.Parse(fi.GetValue(this).ToString()); } } public PropertyGridTableElement Element { get { FieldInfo fi = typeof(PropertyGridTraverser).GetField("propertyGridElement", BindingFlags.NonPublic | BindingFlags.Instance); return fi.GetValue(this) as PropertyGridTableElement ; } } public PropertyGridItemBase Item { get { FieldInfo fi = typeof(PropertyGridTraverser).GetField("item", BindingFlags.NonPublic | BindingFlags.Instance); return fi.GetValue(this) as PropertyGridItemBase ; } set { FieldInfo fi = typeof(PropertyGridTraverser).GetField("item", BindingFlags.NonPublic | BindingFlags.Instance); fi.SetValue(this, value); } } protected override bool MovePreviousFromDataItem(PropertyGridItemBase currentItem) { if (currentItem.Parent != null && currentItem.Parent.GridItems.Count > 0) { if (this.Index > 0) { PropertyGridItemBase prevItem = currentItem.Parent.GridItems[--this.Index]; if (prevItem.Expandable && (prevItem.Expanded || this.TraverseHirarchy)) { prevItem = this.GetLastChild(prevItem); } this.Item = prevItem; return true; } this.Item = currentItem.Parent; this.Index = -1; if (currentItem.Parent.Parent != null) { this.Index = currentItem.Parent.Parent.GridItems.IndexOf(currentItem.Parent as PropertyGridItem); } else { if (this.Element.CollectionView.Groups.Count == 0) { this.Index = this.Element.CollectionView.IndexOf(currentItem.Parent as PropertyGridItem); } else { this.Index = this.Element.CollectionView.Groups[this.GroupIndex].IndexOf(currentItem.Parent as PropertyGridItem); } } return true; } return base.MovePreviousFromDataItem(currentItem); } }