diff --git a/Framework/Kernel/inc/MantidKernel/NexusDescriptor.h b/Framework/Kernel/inc/MantidKernel/NexusDescriptor.h
index e5320bb0aef3f641e717500a621c4e5ccbdef988..7684b32e2f7f8dbaf63e24cb634a89c0c00067c1 100644
--- a/Framework/Kernel/inc/MantidKernel/NexusDescriptor.h
+++ b/Framework/Kernel/inc/MantidKernel/NexusDescriptor.h
@@ -13,6 +13,7 @@
 #include <string>
 #include <unordered_set>
 #include <utility>
+#include <memory>
 
 namespace NeXus {
 class File;
@@ -110,7 +111,7 @@ private:
   std::map<std::string, std::string> m_pathsToTypes;
 
   /// Open NeXus handle
-  ::NeXus::File *m_file;
+  std::unique_ptr< ::NeXus::File> m_file;
 };
 
 } // namespace Kernel
diff --git a/Framework/Kernel/src/NexusDescriptor.cpp b/Framework/Kernel/src/NexusDescriptor.cpp
index cc9902c37bc1aa0130f1a026ed5b987622629ed0..b56b46e2cd3b2b68fffe4033168674dd3ad4fb7f 100644
--- a/Framework/Kernel/src/NexusDescriptor.cpp
+++ b/Framework/Kernel/src/NexusDescriptor.cpp
@@ -142,7 +142,7 @@ NexusDescriptor::NexusDescriptor(const std::string &filename)
 
 /**
  */
-NexusDescriptor::~NexusDescriptor() { delete m_file; }
+NexusDescriptor::~NexusDescriptor() {}
 
 /// Returns the name & type of the first entry in the file
 const std::pair<std::string, std::string> &
@@ -220,7 +220,7 @@ void NexusDescriptor::initialize(const std::string &filename) {
   m_filename = filename;
   m_extension = "." + Poco::Path(filename).getExtension();
 
-  m_file = new ::NeXus::File(this->filename());
+  m_file = std::make_unique<::NeXus::File>(this->filename());
 
   m_file->openPath("/");
   m_rootAttrs.clear();