@Override
	public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) {
		if (orientation == SwingConstants.VERTICAL) {
			Insets insets = getInsets();
			int y = visibleRect.y - insets.top;
			int rowIndex;
			int rowTop;

			if (direction < 0) {
				rowIndex = overRowIndex(y);
				if (rowIndex > -1) {
					rowTop = getRowIndexStart(rowIndex);
					if (rowTop < y) {
						return y - rowTop;
					} else if (--rowIndex > -1) {
						return y - getRowIndexStart(rowIndex);
					}
				}
			} else {
				y += visibleRect.height;
				rowIndex = overRowIndex(y);
				if (rowIndex > -1) {
					rowTop = getRowIndexStart(rowIndex);
					int rowBottom = rowTop + mModel.getRowAtIndex(rowIndex).getHeight() + (mDrawRowDividers ? 1 : 0);
					if (rowBottom > y) {
						return rowBottom - (y - 1);
					} else if (++rowIndex < mModel.getRowCount()) {
						return getRowIndexStart(rowIndex) + mModel.getRowAtIndex(rowIndex).getHeight() + (mDrawRowDividers ? 1 : 0) - (y - 1);
					}
				}
			}
		}
		return 10;
	}