diff --git a/opam.pins b/opam.pins
index 64a42bfc68bc01ead7b24b50da388591541a08ed..f792a0b8c483ad876f4d444e4b8302a03e213168 100644
--- a/opam.pins
+++ b/opam.pins
@@ -1 +1 @@
-coq-stdpp https://gitlab.mpi-sws.org/robbertkrebbers/coq-stdpp 3103b7bf52d0275f2938d9af44ab2d0db89a6251
+coq-stdpp https://gitlab.mpi-sws.org/robbertkrebbers/coq-stdpp 0671cb48dd1f893c48672de216847d46d5263e04
diff --git a/theories/algebra/ofe.v b/theories/algebra/ofe.v
index beddd2adcd59118feb26b0f74e1843d45c6967c1..eeefadec882b0bee0a0508a3747e5cc386d9825e 100644
--- a/theories/algebra/ofe.v
+++ b/theories/algebra/ofe.v
@@ -222,9 +222,7 @@ Ltac f_contractive :=
   end;
   try reflexivity.
 
-Ltac solve_contractive :=
-  preprocess_solve_proper;
-  solve [repeat (first [f_contractive|f_equiv]; try eassumption)].
+Ltac solve_contractive := solve_proper_core ltac:(fun _ => first [f_contractive | f_equiv]).
 
 (** Fixpoint *)
 Program Definition fixpoint_chain {A : ofeT} `{Inhabited A} (f : A → A)