diff --git a/js/reveal.js b/js/reveal.js
index eb9e45df7f26a21118776fb8478885943ac024ac..d5e684a42c5ca69aead9eadc8c3ae81100b44d13 100644
--- a/js/reveal.js
+++ b/js/reveal.js
@@ -461,6 +461,8 @@
 	 */
 	function start() {
 
+		loaded = true;
+
 		// Make sure we've got all the DOM elements we need
 		setupDOM();
 
@@ -488,8 +490,6 @@
 			// Enable transitions now that we're loaded
 			dom.slides.classList.remove( 'no-transition' );
 
-			loaded = true;
-
 			dom.wrapper.classList.add( 'ready' );
 
 			dispatchEvent( 'ready', {
@@ -1014,14 +1014,22 @@
 	 */
 	function configure( options ) {
 
-		var numberOfSlides = dom.wrapper.querySelectorAll( SLIDES_SELECTOR ).length;
-
-		dom.wrapper.classList.remove( config.transition );
+		var oldTransition = config.transition;
 
 		// New config options may be passed when this method
 		// is invoked through the API after initialization
 		if( typeof options === 'object' ) extend( config, options );
 
+		// Abort if reveal.js hasn't finished loading, config
+		// changes will be applied automatically once loading
+		// finishes
+		if( loaded === false ) return;
+
+		var numberOfSlides = dom.wrapper.querySelectorAll( SLIDES_SELECTOR ).length;
+
+		// Remove the previously configured transition class
+		dom.wrapper.classList.remove( oldTransition );
+
 		// Force linear transition based on browser capabilities
 		if( features.transforms3d === false ) config.transition = 'linear';