anchor.diff:            staggeredTile.crossAxisCellCount);
   
         var scrollOffset = block.minOffset;
  -      var crossAxisOffset = block.index * _spanCrossAxisStride;
  +
  +      var blockIndex = block.index;
  +      if (reverseCrossAxis) {
  +        blockIndex = crossAxisCount - 1 - blockIndex;
  +      }
  +      var crossAxisOffset = blockIndex * _cellStride;
   
         var geometry = new SliverGridGeometry(
             scrollOffset: scrollOffset,
             crossAxisOffset: crossAxisOffset,
             mainAxisExtent: staggeredTile.mainAxisExtent,
  -          crossAxisExtent:
  -              _spanCrossAxisStride * staggeredTile.crossAxisCellCount -
  -                  crossAxisSpacing);
  +          crossAxisExtent: _cellStride * staggeredTile.crossAxisCellCount -
  +              crossAxisSpacing);
         tileGeometry =
             new _StaggeredTileGeometry(staggeredTile, geometry, block.index);
         _staggeredTileGeometries[index] = tileGeometry;
  
positive.code: 
    final List<double> _mainAxisOffsets;
  
    final double _spanCrossAxisStride;
  
    @override
    double computeMaxScrollOffset(int childCount) {
  
negative.code:       cellExtent: cellExtent,
        mainAxisSpacing: mainAxisSpacing,
        crossAxisSpacing: crossAxisSpacing,
        reverseCrossAxis: axisDirectionIsReversed(constraints.crossAxisDirection),
      );
    }
  
  