 +          }
 +
 +          if (isVisible) {
-+            this._hasScrolledToRowTarget = (scrollTop >= maxScroll || targetRow.offset === scrollTop);
++            // We check the target row's offset against the totalRowsHeight because sometimes the math can be a bit off,
++            //   and the target row has an offset greater than our calculated total height.
++            this._hasScrolledToRowTarget = targetRow.offset === scrollTop || (targetRow.offset < totalRowsHeight && scrollTop >= maxScroll);
 +          }
 +        }
 +      }

       } else {
         (0, _updateScrollIndexHelper2.default)({
           cellSizeAndPositionManager: instanceProps.rowSizeAndPositionManager,
@@ -635,19 +730,50 @@ var Grid = function (_React$PureComponent) {
         });
       }
 

       } else {
         (0, _updateScrollIndexHelper2.default)({
           cellSizeAndPositionManager: instanceProps.columnSizeAndPositionManager,
@@ -616,6 +711,8 @@ var Grid = function (_React$PureComponent) {
       if (this._recomputeScrollTopFlag) {
         this._recomputeScrollTopFlag = false;
         this._updateScrollTopForScrollToRow(this.props);
