diff --git a/js/controllers/fragments.js b/js/controllers/fragments.js
index 01db85f42a356a30a369556e171379e1e18a2396..ff5b677b7c9d20658022884260d77e07601fa132 100644
--- a/js/controllers/fragments.js
+++ b/js/controllers/fragments.js
@@ -14,10 +14,10 @@ export default class Fragments {
 	}
 
 	/**
-	 * Shows all fragments in the presentation. Used when
-	 * fragments are disabled presentation-wide.
+	 * If fragments are disabled in the deck, they should all be
+	 * visible rather than stepped through.
 	 */
-	showAll() {
+	disable() {
 
 		toArray( this.Reveal.getSlidesElement().querySelectorAll( '.fragment' ) ).forEach( element => {
 			element.classList.add( 'visible' );
@@ -26,6 +26,19 @@ export default class Fragments {
 
 	}
 
+	/**
+	 * Reverse of #disable(). Only called if fragments have
+	 * previously been disabled.
+	 */
+	enable() {
+
+		toArray( this.Reveal.getSlidesElement().querySelectorAll( '.fragment' ) ).forEach( element => {
+			element.classList.remove( 'visible' );
+			element.classList.remove( 'current-fragment' );
+		} );
+
+	}
+
 	/**
 	 * Returns an object describing the available fragment
 	 * directions.
diff --git a/js/reveal.js b/js/reveal.js
index 2ece96174a3c2ffc0dcd3dccdf2bb6038a2b0a4c..17685210620af0f2be187b4f3745aeac22ad9beb 100644
--- a/js/reveal.js
+++ b/js/reveal.js
@@ -787,7 +787,7 @@ export default function( revealElement, options ) {
 	 */
 	function configure( options ) {
 
-		const oldTransition = config.transition;
+		const oldConfig = { ...config }
 
 		// New config options may be passed when this method
 		// is invoked through the API after initialization
@@ -800,7 +800,7 @@ export default function( revealElement, options ) {
 		const numberOfSlides = dom.wrapper.querySelectorAll( SLIDES_SELECTOR ).length;
 
 		// The transition is added as a class on the .reveal element
-		dom.wrapper.classList.remove( oldTransition );
+		dom.wrapper.classList.remove( oldConfig.transition );
 		dom.wrapper.classList.add( config.transition );
 
 		dom.wrapper.setAttribute( 'data-transition-speed', config.transitionSpeed );
@@ -889,9 +889,12 @@ export default function( revealElement, options ) {
 			autoSlidePaused = false;
 		}
 
-		// When fragments are turned off they should be visible
+		// Update the state of our fragments
 		if( config.fragments === false ) {
-			fragments.showAll();
+			fragments.disable();
+		}
+		else if( oldConfig.fragments === false ) {
+			fragments.enable();
 		}
 
 		// Add the navigation mode to the DOM so we can adjust styling