diff --git a/src/lib/gif-decoder.js b/src/lib/gif-decoder.js
index c6cc50eceba1b029a92ae35814fcb18e467f578b..91466eaa41b4fc7ac3a3176b991365e0c0493611 100644
--- a/src/lib/gif-decoder.js
+++ b/src/lib/gif-decoder.js
@@ -34,10 +34,6 @@ export default (arrayBuffer, {onFrame, onDone}) => {
         const dataUrl = canvas.toDataURL();
 
         switch (disposal) {
-        case 0:
-        case 1: // Both are "keep previous frame"
-            previousData = ctx.getImageData(0, 0, canvas.width, canvas.height);
-            break;
         case 2: // "Return to background", blank out the current frame
             ctx.clearRect(x, y, width, height);
             imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
@@ -46,8 +42,7 @@ export default (arrayBuffer, {onFrame, onDone}) => {
             imageData = ctx.createImageData(canvas.width, canvas.height);
             imageData.data.set(previousData.data);
             break;
-        default:
-            // Not defined, treat like do-not-dispose
+        default: // 0 and 1, as well as 4+ modes = do-not-dispose, so cache frame
             previousData = ctx.getImageData(0, 0, canvas.width, canvas.height);
             break;