diff --git a/core/fxcrt/observable_unittest.cpp b/core/fxcrt/observable_unittest.cpp
index 4f86aba..0c84c5d 100644
--- a/core/fxcrt/observable_unittest.cpp
+++ b/core/fxcrt/observable_unittest.cpp
@@ -8,6 +8,7 @@
 #include <vector>
 
 #include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/base/ptr_util.h"
 
 namespace fxcrt {
 namespace {
@@ -31,11 +32,13 @@
 }
 
 TEST(ObservePtr, LivesLonger) {
-  PseudoObservable* pObs = new PseudoObservable;
-  PseudoObservable::ObservedPtr ptr(pObs);
-  EXPECT_NE(nullptr, ptr.Get());
-  EXPECT_EQ(1u, pObs->ActiveObservedPtrs());
-  delete pObs;
+  PseudoObservable::ObservedPtr ptr;
+  {
+    auto pObs = pdfium::MakeUnique<PseudoObservable>();
+    ptr.Reset(pObs.get());
+    EXPECT_NE(nullptr, ptr.Get());
+    EXPECT_EQ(1u, pObs->ActiveObservedPtrs());
+  }
   EXPECT_EQ(nullptr, ptr.Get());
 }
 
diff --git a/core/fxcrt/unowned_ptr_unittest.cpp b/core/fxcrt/unowned_ptr_unittest.cpp
index 26dffd4..8d3c1b4 100644
--- a/core/fxcrt/unowned_ptr_unittest.cpp
+++ b/core/fxcrt/unowned_ptr_unittest.cpp
@@ -8,6 +8,7 @@
 #include <vector>
 
 #include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/base/ptr_util.h"
 
 namespace fxcrt {
 namespace {
@@ -18,39 +19,39 @@
 };
 
 void DeleteDangling() {
-  Clink* ptr1 = new Clink();
-  Clink* ptr2 = new Clink();
-  ptr2->next_ = ptr1;
-  delete ptr1;
-  delete ptr2;
+  auto ptr2 = pdfium::MakeUnique<Clink>();
+  {
+    auto ptr1 = pdfium::MakeUnique<Clink>();
+    ptr2->next_ = ptr1.get();
+  }
 }
 
 void AssignDangling() {
-  Clink* ptr1 = new Clink();
-  Clink* ptr2 = new Clink();
-  ptr2->next_ = ptr1;
-  delete ptr1;
+  auto ptr2 = pdfium::MakeUnique<Clink>();
+  {
+    auto ptr1 = pdfium::MakeUnique<Clink>();
+    ptr2->next_ = ptr1.get();
+  }
   ptr2->next_ = nullptr;
-  delete ptr2;
 }
 
 void ReleaseDangling() {
-  Clink* ptr1 = new Clink();
-  Clink* ptr2 = new Clink();
-  ptr2->next_ = ptr1;
-  delete ptr1;
+  auto ptr2 = pdfium::MakeUnique<Clink>();
+  {
+    auto ptr1 = pdfium::MakeUnique<Clink>();
+    ptr2->next_ = ptr1.get();
+  }
   ptr2->next_.Release();
-  delete ptr2;
 }
 
 }  // namespace
 
 TEST(UnownedPtr, PtrOk) {
-  Clink* ptr1 = new Clink();
-  Clink* ptr2 = new Clink();
-  ptr2->next_ = ptr1;
-  delete ptr2;
-  delete ptr1;
+  auto ptr1 = pdfium::MakeUnique<Clink>();
+  {
+    auto ptr2 = pdfium::MakeUnique<Clink>();
+    ptr2->next_ = ptr1.get();
+  }
 }
 
 TEST(UnownedPtr, PtrNotOk) {
@@ -62,12 +63,12 @@
 }
 
 TEST(UnownedPtr, AssignOk) {
-  Clink* ptr1 = new Clink();
-  Clink* ptr2 = new Clink();
-  ptr2->next_ = ptr1;
-  ptr2->next_ = nullptr;
-  delete ptr2;
-  delete ptr1;
+  auto ptr1 = pdfium::MakeUnique<Clink>();
+  {
+    auto ptr2 = pdfium::MakeUnique<Clink>();
+    ptr2->next_ = ptr1.get();
+    ptr2->next_ = nullptr;
+  }
 }
 
 TEST(UnownedPtr, AssignNotOk) {
@@ -79,12 +80,12 @@
 }
 
 TEST(UnownedPtr, ReleaseOk) {
-  Clink* ptr1 = new Clink();
-  Clink* ptr2 = new Clink();
-  ptr2->next_ = ptr1;
-  ptr2->next_.Release();
-  delete ptr1;
-  delete ptr2;
+  auto ptr2 = pdfium::MakeUnique<Clink>();
+  {
+    auto ptr1 = pdfium::MakeUnique<Clink>();
+    ptr2->next_ = ptr1.get();
+    ptr2->next_.Release();
+  }
 }
 
 TEST(UnownedPtr, ReleaseNotOk) {
