diff --git a/src/plugins/eva/domains/octagons.ml b/src/plugins/eva/domains/octagons.ml
index 978434c00971e97d7ab002ed62c78a6119d37135..bd50d1795910ac96df301e56632ba54de7fcf63c 100644
--- a/src/plugins/eva/domains/octagons.ml
+++ b/src/plugins/eva/domains/octagons.ml
@@ -1065,8 +1065,13 @@ module Deps = struct
 
   let filter (bases: Base.Hptset.t) (m, i : t): VSet.t * t =
     let i_inter, i_diff = BaseToVariables.partition_with_shape bases i in
-    let vars = BaseToVariables.all_variables i_diff in
-    vars, VSet.fold remove vars (m, i_inter)
+    let removed_vars = BaseToVariables.all_variables i_diff in
+    let m = VariableToDeps.diff_with_shape removed_vars m in
+    let filter (s1, s2) =
+      VSet.diff s1 removed_vars, VSet.diff s2 removed_vars
+    in
+    let i = BaseToVariables.map filter i_inter in
+    removed_vars, (m, i)
 
   let get_var_bases (m, _: t) (var: Variable.t) =
     try
@@ -1870,8 +1875,8 @@ module Domain = struct
         mem_var x && mem_var y
       in
       let octagons = Octagons.filter mem_pair state.octagons in
-      let intervals = Intervals.filter mem_var state.intervals in
-      let relations = Relations.filter mem_var state.relations in
+      let intervals = Intervals.diff_with_shape removed_vars state.intervals in
+      let relations = Relations.diff_with_shape removed_vars state.relations in
       { state with octagons; intervals; relations; deps }
 
   let interprocedural_reuse =