diff --git a/wax-prosemirror-services/src/ShortCutsService/ShortCuts.js b/wax-prosemirror-services/src/ShortCutsService/ShortCuts.js
index 63f28ab0a9cf9831f4b0d299b51e6c36830b1022..5309a5d501ec02f3c27ab942b6622597cd39a51e 100644
--- a/wax-prosemirror-services/src/ShortCutsService/ShortCuts.js
+++ b/wax-prosemirror-services/src/ShortCutsService/ShortCuts.js
@@ -15,9 +15,25 @@ import {
   setBlockType,
   chainCommands,
   exitCode,
-  selectParentNode
+  selectParentNode,
+  joinBackward,
+  selectNodeBackward,
+  deleteSelection
 } from "prosemirror-commands";
 
+const backSpace = chainCommands(
+  deleteSelection,
+  joinBackward,
+  selectNodeBackward
+);
+
+const addInputRulebackSpace = (state, dispatch, view) =>
+  backSpace(
+    state,
+    tr => dispatch(tr.setMeta("inputType", "deleteContentBackward")),
+    view
+  );
+
 @injectable()
 class ShortCuts {
   constructor(plugins, schema) {
@@ -65,7 +81,7 @@ class ShortCuts {
     return {
       "Mod-z": undo,
       "Shift-Mod-z": redo,
-      Backspace: undoInputRule,
+      Backspace: addInputRulebackSpace,
       "Mod-y": redo,
       Escape: selectParentNode,
       "Mod-Enter": chainCommands(exitCode, this.insertBreak),
diff --git a/wax-prosemirror-services/src/TrackChangeService/track-changes/trackedTransaction.js b/wax-prosemirror-services/src/TrackChangeService/track-changes/trackedTransaction.js
index 74f9aa34799bf455d8b449d75e5a0ba29857c08c..ce093309726d978ff4184d26c670896c9481d4df 100644
--- a/wax-prosemirror-services/src/TrackChangeService/track-changes/trackedTransaction.js
+++ b/wax-prosemirror-services/src/TrackChangeService/track-changes/trackedTransaction.js
@@ -64,26 +64,31 @@ const trackedTransaction = (tr, state, user) => {
     newTr.setMeta(tr.getMeta("uiEvent"));
   }
 
-  // if (tr.selectionSet) {
-  if (
-    tr.selection instanceof TextSelection &&
-    (tr.selection.from < state.selection.from ||
-      tr.getMeta("inputType") === "deleteContentBackward")
-  ) {
-    const caretPos = map.map(tr.selection.from, -1);
-    newTr.setSelection(new TextSelection(newTr.doc.resolve(caretPos)));
-  } else {
-    const caretPos = map.map(tr.selection.from, -1);
-    newTr.setSelection(new TextSelection(newTr.doc.resolve(caretPos)));
-    // newTr.setSelection(tr.selection.map(newTr.doc, map));
+  if (tr.selectionSet) {
+    if (
+      tr.selection instanceof TextSelection &&
+      (tr.selection.from < state.selection.from ||
+        tr.getMeta("inputType") === "deleteContentBackward")
+    ) {
+      const caretPos = map.map(tr.selection.from, -1);
+      newTr.setSelection(new TextSelection(newTr.doc.resolve(caretPos)));
+    } else {
+      newTr.setSelection(tr.selection.map(newTr.doc, map));
+    }
   }
-  // }
   if (tr.storedMarksSet) {
     newTr.setStoredMarks(tr.storedMarks);
   }
   if (tr.scrolledIntoView) {
     newTr.scrollIntoView();
   }
+  if (
+    tr.selection instanceof TextSelection &&
+    tr.selection.from < state.selection.from
+  ) {
+    const caretPos = map.map(tr.selection.from, -1);
+    newTr.setSelection(new TextSelection(newTr.doc.resolve(caretPos)));
+  }
 
   return newTr;
 };