diff --git a/v17/leanback/src/android/support/v17/leanback/widget/GridLayoutManager.java b/v17/leanback/src/android/support/v17/leanback/widget/GridLayoutManager.java
index 20fd687..91a96fa 100644
--- a/v17/leanback/src/android/support/v17/leanback/widget/GridLayoutManager.java
+++ b/v17/leanback/src/android/support/v17/leanback/widget/GridLayoutManager.java
@@ -1694,9 +1694,12 @@
         for (int i = mLastVisiblePos; i >= mFirstVisiblePos; i--) {
             StaggeredGrid.Location location = mGrid.getLocation(i);
             if (location != null && location.row == rowIndex) {
+                int savedMaxEdge = mWindowAlignment.mainAxis().getMaxEdge();
+                mWindowAlignment.mainAxis().setMaxEdge(maxEdge);
                 maxScroll = mWindowAlignment
                         .mainAxis().getSystemScrollPos(mScrollOffsetPrimary
                         + getViewCenter(findViewByPosition(i)));
+                mWindowAlignment.mainAxis().setMaxEdge(savedMaxEdge);
                 break;
             }
         }
@@ -1737,9 +1740,12 @@
         for (int i = mFirstVisiblePos; i <= mLastVisiblePos; i++) {
             StaggeredGrid.Location location = mGrid.getLocation(i);
             if (location != null && location.row == rowIndex) {
+                int savedMinEdge = mWindowAlignment.mainAxis().getMinEdge();
+                mWindowAlignment.mainAxis().setMinEdge(minEdge);
                 minScroll = mWindowAlignment
                         .mainAxis().getSystemScrollPos(mScrollOffsetPrimary
                         + getViewCenter(findViewByPosition(i)));
+                mWindowAlignment.mainAxis().setMinEdge(savedMinEdge);
                 break;
             }
         }
diff --git a/v17/leanback/src/android/support/v17/leanback/widget/WindowAlignment.java b/v17/leanback/src/android/support/v17/leanback/widget/WindowAlignment.java
index 1affb68..e8073e8 100644
--- a/v17/leanback/src/android/support/v17/leanback/widget/WindowAlignment.java
+++ b/v17/leanback/src/android/support/v17/leanback/widget/WindowAlignment.java
@@ -109,6 +109,10 @@
             mMinEdge = minEdge;
         }
 
+        final public int getMinEdge() {
+            return mMinEdge;
+        }
+
         /** set minScroll,  Integer.MIN_VALUE means unknown*/
         final public void setMinScroll(int minScroll) {
             mMinScroll = minScroll;
@@ -128,6 +132,10 @@
             mMaxEdge = maxEdge;
         }
 
+        final public int getMaxEdge() {
+            return mMaxEdge;
+        }
+
         /** update max scroll,  Integer.MAX_VALUE means unknown*/
         final public void setMaxScroll(int maxScroll) {
             mMaxScroll = maxScroll;
