diff --git a/js/reveal.js b/js/reveal.js
index 6e6c12b80a27cdf634d3ebbae878b467c67a4cca..49b2e7cd66a198e0b7529b467fa365b8f1d001c8 100644
--- a/js/reveal.js
+++ b/js/reveal.js
@@ -360,12 +360,6 @@
 		// Update all backgrounds
 		updateBackground( true );
 
-		// Special setup and config is required when printing to PDF
-		if( isPrintingPDF() ) {
-			removeEventListeners();
-			setupPDF();
-		}
-
 		// Notify listeners that the presentation is ready but use a 1ms
 		// timeout to ensure it's not fired synchronously after #initialize()
 		setTimeout( function() {
@@ -381,6 +375,20 @@
 			} );
 		}, 1 );
 
+		// Special setup and config is required when printing to PDF
+		if( isPrintingPDF() ) {
+			removeEventListeners();
+
+			// The document needs to have loaded for the PDF layout
+			// measurements to be accurate
+			if( document.readyState === 'complete' ) {
+				setupPDF();
+			}
+			else {
+				window.addEventListener( 'load', setupPDF );
+			}
+		}
+
 	}
 
 	/**