diff --git a/src/containers/sound-editor.jsx b/src/containers/sound-editor.jsx
index 4a1b98b565bd587bcae5e6e2414f4ee3e763c5cd..155449ce48b96852097e086f028cd8777615815f 100644
--- a/src/containers/sound-editor.jsx
+++ b/src/containers/sound-editor.jsx
@@ -124,6 +124,7 @@ class SoundEditor extends React.Component {
         const samples = this.undoStack.pop();
         if (samples) {
             this.submitNewSamples(samples, this.props.sampleRate, true);
+            this.handlePlay();
         }
     }
     handleRedo () {
@@ -131,6 +132,7 @@ class SoundEditor extends React.Component {
         if (samples) {
             this.undoStack.push(this.props.samples.slice(0));
             this.submitNewSamples(samples, this.props.sampleRate, true);
+            this.handlePlay();
         }
     }
     render () {
diff --git a/test/unit/containers/sound-editor.test.jsx b/test/unit/containers/sound-editor.test.jsx
index 63199ef01e6f6fffebd49ea2cb0397d1dbb47887..790e6b85c173755adb912913718ffb4ffc652389 100644
--- a/test/unit/containers/sound-editor.test.jsx
+++ b/test/unit/containers/sound-editor.test.jsx
@@ -224,7 +224,7 @@ describe('Sound Editor Container', () => {
         expect(mockAudioEffects.instance.process).toHaveBeenCalled();
     });
 
-    test('undo/redo functionality', () => {
+    test('undo/redo stack state', () => {
         const wrapper = mountWithIntl(
             <SoundEditor
                 soundIndex={soundIndex}
@@ -270,4 +270,34 @@ describe('Sound Editor Container', () => {
         component = wrapper.find(SoundEditorComponent);
         expect(component.prop('canRedo')).toEqual(false);
     });
+
+    test('undo and redo submit new samples and play the sound', () => {
+        const wrapper = mountWithIntl(
+            <SoundEditor
+                soundIndex={soundIndex}
+                store={store}
+            />
+        );
+        let component = wrapper.find(SoundEditorComponent);
+
+        // Set up an undoable state
+        component.props().onActivateTrim(); // Activate trimming
+        component.props().onActivateTrim(); // Submit new samples by calling again
+        wrapper.update();
+        component = wrapper.find(SoundEditorComponent);
+
+        // Undo should update the sound buffer and play the new samples
+        component.props().onUndo();
+        expect(mockAudioBufferPlayer.instance.play).toHaveBeenCalled();
+        expect(vm.updateSoundBuffer).toHaveBeenCalled();
+
+        // Clear the mocks call history to assert again for redo.
+        vm.updateSoundBuffer.mockClear();
+        mockAudioBufferPlayer.instance.play.mockClear();
+
+        // Undo should update the sound buffer and play the new samples
+        component.props().onRedo();
+        expect(mockAudioBufferPlayer.instance.play).toHaveBeenCalled();
+        expect(vm.updateSoundBuffer).toHaveBeenCalled();
+    });
 });