diff --git a/js/reveal.js b/js/reveal.js
index 6daa9f82ac1c5c7613a5eb10d92dfdb8a8bad3c3..962a7cdda74064038ff1299f099018c98e994c57 100644
--- a/js/reveal.js
+++ b/js/reveal.js
@@ -1744,6 +1744,8 @@ var Reveal = (function(){
 		var slides = toArray( document.querySelectorAll( selector ) ),
 			slidesLength = slides.length;
 
+		var printMode = isPrintingPDF();
+
 		if( slidesLength ) {
 
 			// Should the index loop?
@@ -1770,6 +1772,17 @@ var Reveal = (function(){
 				// http://www.w3.org/html/wg/drafts/html/master/editing.html#the-hidden-attribute
 				element.setAttribute( 'hidden', '' );
 
+				// If this element contains vertical slides
+				if( element.querySelector( 'section' ) ) {
+					element.classList.add( 'stack' );
+				}
+
+				// If we're printing static slides, all slides are "present"
+				if( printMode ) {
+					element.classList.add( 'present' );
+					continue;
+				}
+
 				if( i < index ) {
 					// Any element previous to index is given the 'past' class
 					element.classList.add( reverse ? 'future' : 'past' );
@@ -1800,11 +1813,6 @@ var Reveal = (function(){
 						}
 					}
 				}
-
-				// If this element contains vertical slides
-				if( element.querySelector( 'section' ) ) {
-					element.classList.add( 'stack' );
-				}
 			}
 
 			// Mark the current slide as present