diff --git a/wax-prosemirror-core/src/utilities/track-changes/helpers/markDeletion.js b/wax-prosemirror-core/src/utilities/track-changes/helpers/markDeletion.js
index d525de58a9acb9239d4c371027702ab6583d3184..c4dde0a55a19aa9a4f656d767a73d443b0da8c36 100644
--- a/wax-prosemirror-core/src/utilities/track-changes/helpers/markDeletion.js
+++ b/wax-prosemirror-core/src/utilities/track-changes/helpers/markDeletion.js
@@ -115,6 +115,7 @@ const markDeletion = (tr, from, to, user, date, group, viewId) => {
             track,
             group,
             id: uuidv4(),
+            viewid: viewId,
           }),
           // Object.assign(node.attrs.track, { track }),
           node.marks,
diff --git a/wax-prosemirror-core/src/utilities/track-changes/helpers/replaceStep.js b/wax-prosemirror-core/src/utilities/track-changes/helpers/replaceStep.js
index 98fd4204711fea0b3230761d7ef656eb6ee6a77d..dd5bc0164d80cb49f7388bf5a94bc194f02a6ea9 100644
--- a/wax-prosemirror-core/src/utilities/track-changes/helpers/replaceStep.js
+++ b/wax-prosemirror-core/src/utilities/track-changes/helpers/replaceStep.js
@@ -68,7 +68,9 @@ const replaceStep = (
     }
   }
   if (step.from !== step.to) {
-    map.appendMap(markDeletion(newTr, step.from, step.to, user, date, group));
+    map.appendMap(
+      markDeletion(newTr, step.from, step.to, user, date, group, viewId),
+    );
   }
 };
 
diff --git a/wax-prosemirror-core/src/utilities/track-changes/trackedTransaction.js b/wax-prosemirror-core/src/utilities/track-changes/trackedTransaction.js
index e57621f922e1c48cd7180d02579885c34d50f1eb..7373eb3a25fa47f6507d3e4e46c178c29e7378b9 100644
--- a/wax-prosemirror-core/src/utilities/track-changes/trackedTransaction.js
+++ b/wax-prosemirror-core/src/utilities/track-changes/trackedTransaction.js
@@ -39,6 +39,7 @@ const trackedTransaction = (
           'inputType',
           'uiEvent',
           'paste',
+          'pointer',
           'imagePlaceHolder$',
           'imagePlaceHolder$1',
         ].includes(meta),
diff --git a/wax-prosemirror-services/src/CommentsService/components/ConnectedTrackChange.js b/wax-prosemirror-services/src/CommentsService/components/ConnectedTrackChange.js
index c8ffdd9231d3615fe1f379f557d54fd41a7ee1c6..6b67fb815b9dbe165a0b27645d571ae78a3561be 100644
--- a/wax-prosemirror-services/src/CommentsService/components/ConnectedTrackChange.js
+++ b/wax-prosemirror-services/src/CommentsService/components/ConnectedTrackChange.js
@@ -81,13 +81,27 @@ export default ({ trackChangeId, top, recalculateTops, trackChange }) => {
 
   const onClickAccept = () => {
     const acceptConfig = app.config.get('config.AcceptTrackChangeService');
-    acceptTrackChange(state, dispatch, user, activeTrackChange, acceptConfig);
+    acceptTrackChange(
+      dispatch,
+      user,
+      activeTrackChange,
+      acceptConfig,
+      context,
+      trackChange,
+    );
     pmViews[viewId].focus();
   };
 
   const onClickReject = () => {
     const rejectConfig = app.config.get('config.RejectTrackChangeService');
-    rejectTrackChange(state, dispatch, user, activeTrackChange, rejectConfig);
+    rejectTrackChange(
+      dispatch,
+      user,
+      activeTrackChange,
+      rejectConfig,
+      context,
+      trackChange,
+    );
     pmViews[viewId].focus();
   };
 
diff --git a/wax-prosemirror-services/src/CommentsService/components/ui/trackChanges/AcceptTrackChange.js b/wax-prosemirror-services/src/CommentsService/components/ui/trackChanges/AcceptTrackChange.js
index 044d12b414ad6507e9427489e629e352d629b323..02a6dfcda60041b3869675c5f5cdb60070c062da 100644
--- a/wax-prosemirror-services/src/CommentsService/components/ui/trackChanges/AcceptTrackChange.js
+++ b/wax-prosemirror-services/src/CommentsService/components/ui/trackChanges/AcceptTrackChange.js
@@ -15,124 +15,122 @@ const checkFromConfig = (mark, user, config) => {
 };
 
 const acceptTrackChange = (
-  state,
   dispatch,
   user,
   activeTrackChange,
   acceptConfig,
+  context,
+  trackData,
 ) => {
+  const { activeView } = context;
+  const { state } = activeView;
   const {
     tr,
-    selection: { from, to },
+    selection: { from },
   } = state;
 
+  let { to } = activeTrackChange;
+
+  if (trackData?.node?.type?.name === 'figure') {
+    to = activeTrackChange.from + 3;
+  }
+
   tr.setMeta('AcceptReject', true);
   const map = new Mapping();
 
-  state.doc.nodesBetween(
-    activeTrackChange.from,
-    activeTrackChange.to,
-    (node, pos) => {
-      if (
-        node.attrs.track &&
-        node.attrs.track.find(track => track.type === 'deletion')
-      ) {
-        removeNode(tr, node, pos, map);
-      }
-      if (
-        node.marks &&
-        node.marks.find(mark => mark.type.name === 'deletion')
-      ) {
-        const deletionMark = node.marks.find(
-          mark => mark.type.name === 'deletion',
-        );
+  state.doc.nodesBetween(activeTrackChange.from, to, (node, pos) => {
+    if (
+      node.attrs.track &&
+      node.attrs.track.find(track => track.type === 'deletion')
+    ) {
+      removeNode(tr, node, pos, map);
+    }
+    if (node.marks && node.marks.find(mark => mark.type.name === 'deletion')) {
+      const deletionMark = node.marks.find(
+        mark => mark.type.name === 'deletion',
+      );
 
-        const configCheck = checkFromConfig(deletionMark, user, acceptConfig);
-        if (!configCheck) return;
+      const configCheck = checkFromConfig(deletionMark, user, acceptConfig);
+      if (!configCheck) return;
 
-        const deletionStep = new ReplaceStep(
+      const deletionStep = new ReplaceStep(
+        map.map(Math.max(pos, from)),
+        map.map(Math.min(pos + node.nodeSize, to)),
+        Slice.empty,
+      );
+      tr.step(deletionStep);
+      map.appendMap(deletionStep.getMap());
+    } else if (
+      node.attrs.track &&
+      node.attrs.track.find(track => track.type === 'insertion')
+    ) {
+      const track = node.attrs.track.filter(
+        track => track.type !== 'insertion',
+      );
+      tr.setNodeMarkup(
+        map.map(pos),
+        null,
+        Object.assign(node.attrs.track, { track }),
+        node.marks,
+      );
+    } else if (
+      node.marks &&
+      node.marks.find(mark => mark.type.name === 'insertion')
+    ) {
+      const insertionMark = node.marks.find(
+        mark => mark.type.name === 'insertion',
+      );
+      const configCheck = checkFromConfig(insertionMark, user, acceptConfig);
+      if (!configCheck) return;
+
+      tr.step(
+        new RemoveMarkStep(
           map.map(Math.max(pos, from)),
           map.map(Math.min(pos + node.nodeSize, to)),
-          Slice.empty,
-        );
-        tr.step(deletionStep);
-        map.appendMap(deletionStep.getMap());
-      } else if (
-        node.attrs.track &&
-        node.attrs.track.find(track => track.type === 'insertion')
-      ) {
-        const track = node.attrs.track.filter(
-          track => track.type !== 'insertion',
-        );
-        tr.setNodeMarkup(
-          map.map(pos),
-          null,
-          Object.assign(node.attrs.track, { track }),
-          node.marks,
-        );
-      } else if (
-        node.marks &&
-        node.marks.find(mark => mark.type.name === 'insertion')
-      ) {
-        const insertionMark = node.marks.find(
-          mark => mark.type.name === 'insertion',
-        );
-        const configCheck = checkFromConfig(insertionMark, user, acceptConfig);
-        if (!configCheck) return;
+          insertionMark,
+        ),
+      );
+    } else if (
+      node.marks &&
+      node.marks.find(mark => mark.type.name === 'format_change')
+    ) {
+      const formatChangeMark = node.marks.find(
+        mark => mark.type.name === 'format_change',
+      );
+      const configCheck = checkFromConfig(formatChangeMark, user, acceptConfig);
+      if (!configCheck) return;
 
-        tr.step(
-          new RemoveMarkStep(
-            map.map(Math.max(pos, from)),
-            map.map(Math.min(pos + node.nodeSize, to)),
-            insertionMark,
-          ),
-        );
-      } else if (
-        node.marks &&
-        node.marks.find(mark => mark.type.name === 'format_change')
-      ) {
-        const formatChangeMark = node.marks.find(
-          mark => mark.type.name === 'format_change',
-        );
-        const configCheck = checkFromConfig(
+      tr.step(
+        new RemoveMarkStep(
+          activeTrackChange.from,
+          activeTrackChange.to,
           formatChangeMark,
-          user,
-          acceptConfig,
-        );
-        if (!configCheck) return;
-
-        tr.step(
-          new RemoveMarkStep(
-            activeTrackChange.from,
-            activeTrackChange.to,
-            formatChangeMark,
-          ),
-        );
-      } else if (
-        node.attrs.track &&
-        node.attrs.track.find(track => track.type === 'block_change')
-      ) {
-        const blockChangeTrack = node.attrs.track.find(
-          track => track.type === 'block_change',
-        );
+        ),
+      );
+    } else if (
+      node.attrs.track &&
+      node.attrs.track.find(track => track.type === 'block_change')
+    ) {
+      const blockChangeTrack = node.attrs.track.find(
+        track => track.type === 'block_change',
+      );
 
-        const track = node.attrs.track.filter(
-          track => track !== blockChangeTrack,
-        );
+      const track = node.attrs.track.filter(
+        track => track !== blockChangeTrack,
+      );
 
-        tr.setNodeMarkup(
-          map.map(pos),
-          null,
-          {
-            class: node.attrs.class,
-            track: [],
-          },
-          // Object.assign(node.attrs.track, { track }),
-          node.marks,
-        );
-      }
-    },
-  );
+      tr.setNodeMarkup(
+        map.map(pos),
+        null,
+        {
+          class: node.attrs.class,
+          track: [],
+        },
+        // Object.assign(node.attrs.track, { track }),
+        node.marks,
+      );
+    }
+  });
   if (tr.steps.length) dispatch(tr);
 };
 
diff --git a/wax-prosemirror-services/src/CommentsService/components/ui/trackChanges/RejectTrackChange.js b/wax-prosemirror-services/src/CommentsService/components/ui/trackChanges/RejectTrackChange.js
index 039bf44469d3d29dabf8a1e0233106935986904f..49a75f7ed8c6f9ec356ffc868c181d1d6496a711 100644
--- a/wax-prosemirror-services/src/CommentsService/components/ui/trackChanges/RejectTrackChange.js
+++ b/wax-prosemirror-services/src/CommentsService/components/ui/trackChanges/RejectTrackChange.js
@@ -20,20 +20,30 @@ const checkFromConfig = (mark, user, config) => {
 };
 
 const rejectTrackChange = (
-  state,
   dispatch,
   user,
   activeTrackChange,
   rejectConfig,
+  context,
+  trackData,
 ) => {
+  const { activeView } = context;
+  const { state } = activeView;
   const {
     tr,
-    selection: { from, to },
+    selection: { from },
   } = state;
+
+  let { to } = activeTrackChange;
+
+  if (trackData?.node?.type?.name === 'figure') {
+    to = activeTrackChange.from + 3;
+  }
+  console.log(activeTrackChange, trackData);
   tr.setMeta('AcceptReject', true);
   const map = new Mapping();
 
-  state.doc.nodesBetween(from, to, (node, pos) => {
+  state.doc.nodesBetween(activeTrackChange.from, to, (node, pos) => {
     if (node.marks && node.marks.find(mark => mark.type.name === 'deletion')) {
       const deletionMark = node.marks.find(
         mark => mark.type.name === 'deletion',
@@ -48,15 +58,19 @@ const rejectTrackChange = (
           deletionMark,
         ),
       );
-    } else if (
+    }
+    if (
       node.attrs.track &&
       node.attrs.track.find(track => track.type === 'insertion')
     ) {
       removeNode(tr, node, pos, map);
     } else if (
-      node.marks &&
-      node.marks.find(mark => mark.type.name === 'insertion')
+      node.attrs.track &&
+      node.attrs.track.find(track => track.type === 'deletion')
     ) {
+      tr.setNodeMarkup(map.map(pos), undefined, { ...node.attrs, track: [] });
+    }
+    if (node.marks && node.marks.find(mark => mark.type.name === 'insertion')) {
       const insertionMark = node.marks.find(
         mark => mark.type.name === 'insertion',
       );
diff --git a/wax-prosemirror-services/src/CommentsService/components/ui/trackChanges/TrackChangesBox.js b/wax-prosemirror-services/src/CommentsService/components/ui/trackChanges/TrackChangesBox.js
index 87c6cc0f733608b60e628dfd78d664b0837919f4..9316652ab92e983a54fa529eacf74ef31e868229 100644
--- a/wax-prosemirror-services/src/CommentsService/components/ui/trackChanges/TrackChangesBox.js
+++ b/wax-prosemirror-services/src/CommentsService/components/ui/trackChanges/TrackChangesBox.js
@@ -127,6 +127,7 @@ const TrackChangesBox = props => {
   const labelBlockChange = 'changed ';
   let textBlockChange = '';
   let textBlockInsert = '';
+  let textBlockRemoved = '';
 
   if (trackData.type && trackData.type.name === 'format_change') {
     const { before, after } = trackData.attrs;
@@ -156,6 +157,9 @@ const TrackChangesBox = props => {
     if (track.type === 'block_change') {
       textBlockChange = `${track.before.type} to ${trackData.node.type.name}`;
     }
+    if (track.type === 'deletion') {
+      textBlockRemoved = trackData.node.type.name;
+    }
   }
 
   return (
@@ -198,6 +202,12 @@ const TrackChangesBox = props => {
             <Text>{textBlockInsert}</Text>
           </ActionWrapper>
         )}
+        {textBlockRemoved !== '' && (
+          <ActionWrapper>
+            <Label>{labelRemoved}</Label>
+            <Text>{textBlockRemoved}</Text>
+          </ActionWrapper>
+        )}
         {textBlockChange !== '' && (
           <ActionWrapper>
             <Label>{labelBlockChange}</Label>
diff --git a/wax-prosemirror-services/src/CommentsService/components/ui/trackChanges/removeNode.js b/wax-prosemirror-services/src/CommentsService/components/ui/trackChanges/removeNode.js
index c698e47c2ef9c4ec4ba8ce83db491a7c34d35c3c..ce8b4788a1907e0445ffd2dff02ee9f27828c592 100644
--- a/wax-prosemirror-services/src/CommentsService/components/ui/trackChanges/removeNode.js
+++ b/wax-prosemirror-services/src/CommentsService/components/ui/trackChanges/removeNode.js
@@ -1,13 +1,23 @@
-import { replaceStep } from 'prosemirror-transform';
+import { replaceStep, ReplaceStep } from 'prosemirror-transform';
+import { Slice } from 'prosemirror-model';
 import { Selection } from 'prosemirror-state';
 
 const removeNode = (tr, node, nodePos, map) => {
   const newNodePos = map.map(nodePos);
+  let delStep;
   const selectionBefore = Selection.findFrom(tr.doc.resolve(newNodePos), -1);
   const start = selectionBefore.$anchor.pos;
   const end = newNodePos + 1;
 
-  const delStep = replaceStep(tr.doc, start, end);
+  if (node.isLeaf || ['figure', 'table'].includes(node.type.name)) {
+    delStep = new ReplaceStep(
+      newNodePos,
+      map.map(nodePos + node.nodeSize),
+      Slice.empty,
+    );
+  } else {
+    delStep = replaceStep(tr.doc, start, end);
+  }
 
   tr.step(delStep);
   const stepMap = delStep.getMap();
diff --git a/wax-prosemirror-services/src/ImageService/AltComponent.js b/wax-prosemirror-services/src/ImageService/AltComponent.js
index d6469398d24591ba339602ab295fb9a27c3e7ca6..8f6212426cf6fefdd509517162e1642ba8aee6fc 100644
--- a/wax-prosemirror-services/src/ImageService/AltComponent.js
+++ b/wax-prosemirror-services/src/ImageService/AltComponent.js
@@ -64,10 +64,12 @@ export default ({ setPosition, position }) => {
     const { selection } = activeView.state;
     setAltText(altRef.current.value);
     activeView.dispatch(
-      activeView.state.tr.setNodeMarkup(selection.from, undefined, {
-        ...selection.node.attrs,
-        alt: altRef.current.value,
-      }),
+      activeView.state.tr
+        .setNodeMarkup(selection.from, undefined, {
+          ...selection.node.attrs,
+          alt: altRef.current.value,
+        })
+        .setMeta('imageAlt', true),
     );
   };