|  | @@ -1587,13 +1587,14 @@ var Reveal = (function(){
 | 
	
		
			
				|  |  |  		// an array
 | 
	
		
			
				|  |  |  		var horizontalSlides = toArray( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ),
 | 
	
		
			
				|  |  |  			horizontalSlidesLength = horizontalSlides.length,
 | 
	
		
			
				|  |  | -			distance;
 | 
	
		
			
				|  |  | +			distanceX,
 | 
	
		
			
				|  |  | +			distanceY;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		if( horizontalSlidesLength ) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  			// The number of steps away from the present slide that will
 | 
	
		
			
				|  |  |  			// be visible
 | 
	
		
			
				|  |  | -			var viewDistance = isOverview() ? 20 : config.viewDistance;
 | 
	
		
			
				|  |  | +			var viewDistance = isOverview() ? 10 : config.viewDistance;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  			// Limit view distance on weaker devices
 | 
	
		
			
				|  |  |  			if( isMobileDevice ) {
 | 
	
	
		
			
				|  | @@ -1606,30 +1607,29 @@ var Reveal = (function(){
 | 
	
		
			
				|  |  |  				var verticalSlides = toArray( horizontalSlide.querySelectorAll( 'section' ) ),
 | 
	
		
			
				|  |  |  					verticalSlidesLength = verticalSlides.length;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +				// Loops so that it measures 1 between the first and last slides
 | 
	
		
			
				|  |  | +				distanceX = Math.abs( ( indexh - x ) % ( horizontalSlidesLength - viewDistance ) ) || 0;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  				if( verticalSlidesLength ) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  					// Always show the vertical stack itself, even if its child
 | 
	
		
			
				|  |  |  					// slides are invisible
 | 
	
		
			
				|  |  |  					horizontalSlide.style.display = 'block';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +					var oy = getPreviousVerticalIndex( horizontalSlide );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  					for( var y = 0; y < verticalSlidesLength; y++ ) {
 | 
	
		
			
				|  |  |  						var verticalSlide = verticalSlides[y];
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -						var dx = x - indexh,
 | 
	
		
			
				|  |  | -							dy = y - indexv;
 | 
	
		
			
				|  |  | +						distanceY = x === indexh ? Math.abs( indexv - y ) : Math.abs( y - oy );
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -						distance = Math.sqrt( dx*dx + dy*dy );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -						verticalSlide.style.display = distance > viewDistance ? 'none' : 'block';
 | 
	
		
			
				|  |  | +						verticalSlide.style.display = ( distanceX + distanceY ) > viewDistance ? 'none' : 'block';
 | 
	
		
			
				|  |  |  					}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  				else {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -					// Loops so that it measures 1 between the first and last slides
 | 
	
		
			
				|  |  | -					distance = Math.abs( ( indexh - x ) % ( horizontalSlidesLength - viewDistance ) ) || 0;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -					horizontalSlide.style.display = distance > viewDistance ? 'none' : 'block';
 | 
	
		
			
				|  |  | +					horizontalSlide.style.display = distanceX > viewDistance ? 'none' : 'block';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  			}
 |