diff --git a/Framework/API/src/MDGeometry.cpp b/Framework/API/src/MDGeometry.cpp
index a79ad7f20a99af83b8158aaf20963f72636bc611..61f15fd5667e541d570c36989f6632df40905682 100644
--- a/Framework/API/src/MDGeometry.cpp
+++ b/Framework/API/src/MDGeometry.cpp
@@ -4,6 +4,7 @@
 #include "MantidGeometry/MDGeometry/MDGeometryXMLBuilder.h"
 #include "MantidGeometry/MDGeometry/IMDDimension.h"
 #include "MantidGeometry/MDGeometry/MDHistoDimension.h"
+#include <boost/make_shared.hpp>
 
 using namespace Mantid::Kernel;
 using namespace Mantid::API;
@@ -34,8 +35,8 @@ MDGeometry::MDGeometry(const MDGeometry &other)
   std::vector<Mantid::Geometry::IMDDimension_sptr> dimensions;
   for (size_t d = 0; d < other.getNumDims(); d++) {
     // Copy the dimension
-    MDHistoDimension_sptr dim(
-        new MDHistoDimension(other.getDimension(d).get()));
+    auto dim =
+        boost::make_shared<MDHistoDimension>(other.getDimension(d).get());
     dimensions.push_back(dim);
   }
   this->initGeometry(dimensions);
diff --git a/Framework/Algorithms/src/ChopData.cpp b/Framework/Algorithms/src/ChopData.cpp
index 0f2ed0f7774b5585174060380f854352f00be41c..5d1814715929c8f4aa661f53598417a767c9637a 100644
--- a/Framework/Algorithms/src/ChopData.cpp
+++ b/Framework/Algorithms/src/ChopData.cpp
@@ -162,7 +162,7 @@ void ChopData::exec() {
   }
 
   // Create workspace group that holds output workspaces
-  WorkspaceGroup_sptr wsgroup = WorkspaceGroup_sptr(new WorkspaceGroup());
+  auto wsgroup = boost::make_shared<WorkspaceGroup>();
 
   for (auto &workspace : workspaces) {
     wsgroup->addWorkspace(workspace);
diff --git a/Framework/Algorithms/src/CreateGroupingWorkspace.cpp b/Framework/Algorithms/src/CreateGroupingWorkspace.cpp
index e731536b5ae9c18ac728a6f7cfc903731ec371ae..353f25520f92b774f9aa3f055ed681d2528ec757 100644
--- a/Framework/Algorithms/src/CreateGroupingWorkspace.cpp
+++ b/Framework/Algorithms/src/CreateGroupingWorkspace.cpp
@@ -349,7 +349,7 @@ void CreateGroupingWorkspace::exec() {
     inst = inWS->getInstrument();
   } else {
     Algorithm_sptr childAlg = createChildAlgorithm("LoadInstrument", 0.0, 0.2);
-    MatrixWorkspace_sptr tempWS(new Workspace2D());
+    MatrixWorkspace_sptr tempWS = boost::make_shared<Workspace2D>();
     childAlg->setProperty<MatrixWorkspace_sptr>("Workspace", tempWS);
     childAlg->setPropertyValue("Filename", InstrumentFilename);
     childAlg->setProperty("RewriteSpectraMap",
@@ -388,7 +388,7 @@ void CreateGroupingWorkspace::exec() {
   }
 
   // --------------------------- Create the output --------------------------
-  GroupingWorkspace_sptr outWS(new GroupingWorkspace(inst));
+  auto outWS = boost::make_shared<GroupingWorkspace>(inst);
   this->setProperty("OutputWorkspace", outWS);
 
   // This will get the grouping
diff --git a/Framework/Algorithms/src/CreatePeaksWorkspace.cpp b/Framework/Algorithms/src/CreatePeaksWorkspace.cpp
index 24898139121212d034182de18e9c556f6672eabe..e890daefffa7d74cddf64c02e2809dd01fc41f79 100644
--- a/Framework/Algorithms/src/CreatePeaksWorkspace.cpp
+++ b/Framework/Algorithms/src/CreatePeaksWorkspace.cpp
@@ -47,7 +47,7 @@ void CreatePeaksWorkspace::init() {
 void CreatePeaksWorkspace::exec() {
   MatrixWorkspace_sptr instWS = getProperty("InstrumentWorkspace");
 
-  PeaksWorkspace_sptr out(new PeaksWorkspace());
+  auto out = boost::make_shared<PeaksWorkspace>();
   setProperty("OutputWorkspace", out);
   int NumberOfPeaks = getProperty("NumberOfPeaks");
 
diff --git a/Framework/Algorithms/src/CreateSampleWorkspace.cpp b/Framework/Algorithms/src/CreateSampleWorkspace.cpp
index f0a3ee64fade59904e59673e86babb97bce4e9cb..da275efcbe2cbce35ee0b70fb7ab09505fac5f2d 100644
--- a/Framework/Algorithms/src/CreateSampleWorkspace.cpp
+++ b/Framework/Algorithms/src/CreateSampleWorkspace.cpp
@@ -306,7 +306,7 @@ MatrixWorkspace_sptr CreateSampleWorkspace::createHistogramWorkspace(
   std::transform(y.access().begin(), y.access().end(), e.access().begin(),
                  dblSqrt);
 
-  MatrixWorkspace_sptr retVal(new DataObjects::Workspace2D);
+  MatrixWorkspace_sptr retVal = boost::make_shared<DataObjects::Workspace2D>();
   retVal->initialize(numPixels, numBins + 1, numBins);
   retVal->setInstrument(inst);
 
@@ -331,7 +331,7 @@ EventWorkspace_sptr CreateSampleWorkspace::createEventWorkspace(
   // add one to the number of bins as this is histogram
   int numXBins = numBins + 1;
 
-  EventWorkspace_sptr retVal(new EventWorkspace);
+  auto retVal = boost::make_shared<EventWorkspace>();
   retVal->initialize(numPixels, 1, 1);
 
   retVal->setInstrument(inst);
diff --git a/Framework/Algorithms/src/DetectorDiagnostic.cpp b/Framework/Algorithms/src/DetectorDiagnostic.cpp
index ea902236dd7c26dbb69776872182e4cb2e159789..33329f6e4cfdd48d3f138d1914f613cad93cbc0b 100644
--- a/Framework/Algorithms/src/DetectorDiagnostic.cpp
+++ b/Framework/Algorithms/src/DetectorDiagnostic.cpp
@@ -523,7 +523,7 @@ DataObjects::MaskWorkspace_sptr
 DetectorDiagnostic::generateEmptyMask(API::MatrixWorkspace_const_sptr inputWS) {
   // Create a new workspace for the results, copy from the input to ensure that
   // we copy over the instrument and current masking
-  DataObjects::MaskWorkspace_sptr maskWS(new DataObjects::MaskWorkspace());
+  auto maskWS = boost::make_shared<DataObjects::MaskWorkspace>();
   maskWS->initialize(inputWS->getNumberHistograms(), 1, 1);
   WorkspaceFactory::Instance().initializeFromParent(inputWS, maskWS, false);
   maskWS->setTitle(inputWS->getTitle());
diff --git a/Framework/Algorithms/src/EditInstrumentGeometry.cpp b/Framework/Algorithms/src/EditInstrumentGeometry.cpp
index e9d404988113a6a5b5821b17888bdd0ac86a1d90..fef7776d1e377956f90a0a340c405f1bb8265959 100644
--- a/Framework/Algorithms/src/EditInstrumentGeometry.cpp
+++ b/Framework/Algorithms/src/EditInstrumentGeometry.cpp
@@ -289,7 +289,7 @@ void EditInstrumentGeometry::exec() {
   }
 
   // Create a new instrument from scratch any way.
-  Geometry::Instrument_sptr instrument(new Geometry::Instrument(name));
+  auto instrument = boost::make_shared<Geometry::Instrument>(name);
   if (!bool(instrument)) {
     stringstream errss;
     errss << "Trying to use a Parametrized Instrument as an Instrument.";
diff --git a/Framework/Algorithms/src/GetDetOffsetsMultiPeaks.cpp b/Framework/Algorithms/src/GetDetOffsetsMultiPeaks.cpp
index 53c47f9faa680ec78992d39b4538ee7562da5f35..dc555af11fc784d9f2af5be79d50723bde8950a3 100644
--- a/Framework/Algorithms/src/GetDetOffsetsMultiPeaks.cpp
+++ b/Framework/Algorithms/src/GetDetOffsetsMultiPeaks.cpp
@@ -349,8 +349,8 @@ void GetDetOffsetsMultiPeaks::processProperties() {
   // Create output workspaces
   m_outputW = boost::make_shared<OffsetsWorkspace>(m_inputWS->getInstrument());
   m_outputNP = boost::make_shared<OffsetsWorkspace>(m_inputWS->getInstrument());
-  MatrixWorkspace_sptr tempmaskws(
-      new MaskWorkspace(m_inputWS->getInstrument()));
+  MatrixWorkspace_sptr tempmaskws =
+      boost::make_shared<MaskWorkspace>(m_inputWS->getInstrument());
   m_maskWS = tempmaskws;
 
   // Input resolution
diff --git a/Framework/Algorithms/src/GetDetectorOffsets.cpp b/Framework/Algorithms/src/GetDetectorOffsets.cpp
index 63657b4e09bb0a67d7de07027352ddbbb109f961..30e9896572d57aa9351841a55d42934bcf3ab661 100644
--- a/Framework/Algorithms/src/GetDetectorOffsets.cpp
+++ b/Framework/Algorithms/src/GetDetectorOffsets.cpp
@@ -110,9 +110,9 @@ void GetDetectorOffsets::exec() {
 
   int64_t nspec = inputW->getNumberHistograms();
   // Create the output OffsetsWorkspace
-  OffsetsWorkspace_sptr outputW(new OffsetsWorkspace(inputW->getInstrument()));
+  auto outputW = boost::make_shared<OffsetsWorkspace>(inputW->getInstrument());
   // Create the output MaskWorkspace
-  MaskWorkspace_sptr maskWS(new MaskWorkspace(inputW->getInstrument()));
+  auto maskWS = boost::make_shared<MaskWorkspace>(inputW->getInstrument());
   // To get the workspace index from the detector ID
   const detid2index_map pixel_to_wi =
       maskWS->getDetectorIDToWorkspaceIndexMap(true);
diff --git a/Framework/Algorithms/src/Q1DWeighted.cpp b/Framework/Algorithms/src/Q1DWeighted.cpp
index 10962a722a45c35eb80ff7def34599c01f622aa7..e97c2069439695aa13ae4a699e850995fdfac83b 100644
--- a/Framework/Algorithms/src/Q1DWeighted.cpp
+++ b/Framework/Algorithms/src/Q1DWeighted.cpp
@@ -334,7 +334,7 @@ void Q1DWeighted::exec() {
   }
 
   // Create workspace group that holds output workspaces
-  WorkspaceGroup_sptr wsgroup = WorkspaceGroup_sptr(new WorkspaceGroup());
+  auto wsgroup = boost::make_shared<WorkspaceGroup>();
 
   for (auto &wedgeWorkspace : wedgeWorkspaces) {
     wsgroup->addWorkspace(wedgeWorkspace);
diff --git a/Framework/Geometry/src/Instrument.cpp b/Framework/Geometry/src/Instrument.cpp
index 26195d56a445bc47c54a3eab916bff108c283472..83a61ea9845bfe203ed2988ffe43dbac2d407d27 100644
--- a/Framework/Geometry/src/Instrument.cpp
+++ b/Framework/Geometry/src/Instrument.cpp
@@ -861,8 +861,7 @@ Instrument::getPlottable() const {
 
   } else {
     // Base instrument
-    boost::shared_ptr<std::vector<IObjComponent_const_sptr>> res(
-        new std::vector<IObjComponent_const_sptr>);
+    auto res = boost::make_shared<std::vector<IObjComponent_const_sptr>>();
     res->reserve(m_detectorCache.size() + 10);
     appendPlottable(*this, *res);
     return res;
diff --git a/Framework/Geometry/src/Instrument/InstrumentDefinitionParser.cpp b/Framework/Geometry/src/Instrument/InstrumentDefinitionParser.cpp
index dc78a1bff4290fb48fa068a8d8fe4be825e59b1c..8ab52537d221de44fcd3f48eb1e18227a7e68e3e 100644
--- a/Framework/Geometry/src/Instrument/InstrumentDefinitionParser.cpp
+++ b/Framework/Geometry/src/Instrument/InstrumentDefinitionParser.cpp
@@ -2291,7 +2291,7 @@ InstrumentDefinitionParser::getAppliedCachingOption() const {
 
 void InstrumentDefinitionParser::createNeutronicInstrument() {
   // Create a copy of the instrument
-  Instrument_sptr physical(new Instrument(*m_instrument));
+  auto physical = boost::make_shared<Instrument>(*m_instrument);
   // Store the physical instrument 'inside' the neutronic instrument
   m_instrument->setPhysicalInstrument(physical);
 
diff --git a/Framework/TestHelpers/src/MDEventsTestHelper.cpp b/Framework/TestHelpers/src/MDEventsTestHelper.cpp
index f1797c3a5224c8953d001908b27d6195903404e8..bf524406a8e8c76fe35093e265da4072264fc711 100644
--- a/Framework/TestHelpers/src/MDEventsTestHelper.cpp
+++ b/Framework/TestHelpers/src/MDEventsTestHelper.cpp
@@ -65,7 +65,7 @@ EventWorkspace_sptr
 createDiffractionEventWorkspace(int numEvents, int numPixels, int numBins) {
   double binDelta = 10.0;
 
-  EventWorkspace_sptr retVal(new EventWorkspace);
+  auto retVal = boost::make_shared<EventWorkspace>();
   retVal->initialize(numPixels, 1, 1);
 
   // --------- Load the instrument -----------
@@ -349,7 +349,7 @@ Mantid::DataObjects::MDHistoWorkspace_sptr makeFakeMDHistoWorkspaceWithMDFrame(
         " invalid or unsupported number of dimensions given");
 
   ws_sptr->setTo(signal, errorSquared, numEvents);
-  ws_sptr->addExperimentInfo(ExperimentInfo_sptr(new ExperimentInfo()));
+  ws_sptr->addExperimentInfo(boost::make_shared<ExperimentInfo>());
   if (!name.empty())
     AnalysisDataService::Instance().addOrReplace(name, ws_sptr);
   return ws_sptr;
diff --git a/Framework/TestHelpers/src/WorkspaceCreationHelper.cpp b/Framework/TestHelpers/src/WorkspaceCreationHelper.cpp
index 1419325d126e8e822d628eee14cadcdf93dbdb9b..c4637dc08022db5db4a263c5e0f7003f33eab2cc 100644
--- a/Framework/TestHelpers/src/WorkspaceCreationHelper.cpp
+++ b/Framework/TestHelpers/src/WorkspaceCreationHelper.cpp
@@ -76,7 +76,7 @@ Workspace2D_sptr Create1DWorkspaceRand(int size) {
   std::generate(y1.access().begin(), y1.access().end(), randFunc);
   e1.access().resize(size);
   std::generate(e1.access().begin(), e1.access().end(), randFunc);
-  Workspace2D_sptr retVal(new Workspace2D);
+  auto retVal = boost::make_shared<Workspace2D>();
   retVal->initialize(1, size, size);
   retVal->setX(0, x1);
   retVal->setData(0, y1, e1);
@@ -89,7 +89,7 @@ Workspace2D_sptr Create1DWorkspaceConstant(int size, double value,
   x1.access().resize(size, 1);
   y1.access().resize(size, value);
   e1.access().resize(size, error);
-  Workspace2D_sptr retVal(new Workspace2D);
+  auto retVal = boost::make_shared<Workspace2D>();
   retVal->initialize(1, size, size);
   retVal->setX(0, x1);
   retVal->setData(0, y1, e1);
@@ -112,7 +112,7 @@ Workspace2D_sptr Create1DWorkspaceFib(int size) {
   y1.access().resize(size);
   std::generate(y1.access().begin(), y1.access().end(), FibSeries<double>());
   e1.access().resize(size);
-  Workspace2D_sptr retVal(new Workspace2D);
+  auto retVal = boost::make_shared<Workspace2D>();
   retVal->initialize(1, size, size);
   retVal->setX(0, x1);
   retVal->setData(0, y1, e1);
@@ -159,7 +159,7 @@ Create2DWorkspaceWithValues(int64_t nHist, int64_t nBins, bool isHist,
   x1.access().resize(isHist ? nBins + 1 : nBins, xVal);
   y1.access().resize(nBins, yVal);
   e1.access().resize(nBins, eVal);
-  Workspace2D_sptr retVal(new Workspace2D);
+  auto retVal = boost::make_shared<Workspace2D>();
   retVal->initialize(nHist, isHist ? nBins + 1 : nBins, nBins);
   for (int i = 0; i < nHist; i++) {
     retVal->setX(i, x1);
@@ -239,7 +239,7 @@ Workspace2D_sptr maskSpectra(Workspace2D_sptr workspace,
  */
 WorkspaceGroup_sptr CreateWorkspaceGroup(int nEntries, int nHist, int nBins,
                                          const std::string &stem) {
-  WorkspaceGroup_sptr group(new WorkspaceGroup);
+  auto group = boost::make_shared<WorkspaceGroup>();
   AnalysisDataService::Instance().add(stem, group);
   for (int i = 0; i < nEntries; ++i) {
     Workspace2D_sptr ws = Create2DWorkspace(nHist, nBins);
@@ -263,7 +263,7 @@ Workspace2D_sptr Create2DWorkspaceBinned(int nhist, int nbins, double x0,
   for (int i = 0; i < nbins + 1; ++i) {
     x.access()[i] = x0 + i * deltax;
   }
-  Workspace2D_sptr retVal(new Workspace2D);
+  auto retVal = boost::make_shared<Workspace2D>();
   retVal->initialize(nhist, nbins + 1, nbins);
   for (int i = 0; i < nhist; i++) {
     retVal->setX(i, x);
@@ -286,7 +286,7 @@ Workspace2D_sptr Create2DWorkspaceBinned(int nhist, const int numBoundaries,
   for (int i = 0; i < numBoundaries; ++i) {
     x.access()[i] = xBoundaries[i];
   }
-  Workspace2D_sptr retVal(new Workspace2D);
+  auto retVal = boost::make_shared<Workspace2D>();
   retVal->initialize(nhist, numBins + 1, numBins);
   for (int i = 0; i < nhist; i++) {
     retVal->setX(i, x);
@@ -600,15 +600,12 @@ void createInstrumentForWorkspaceWithDistances(
 
 //================================================================================================================
 WorkspaceSingleValue_sptr CreateWorkspaceSingleValue(double value) {
-  WorkspaceSingleValue_sptr retVal(
-      new WorkspaceSingleValue(value, sqrt(value)));
-  return retVal;
+  return boost::make_shared<WorkspaceSingleValue>(value, sqrt(value));
 }
 
 WorkspaceSingleValue_sptr CreateWorkspaceSingleValueWithError(double value,
                                                               double error) {
-  WorkspaceSingleValue_sptr retVal(new WorkspaceSingleValue(value, error));
-  return retVal;
+  return boost::make_shared<WorkspaceSingleValue>(value, error);
 }
 
 /** Perform some finalization on event workspace stuff */
@@ -657,7 +654,7 @@ CreateEventWorkspaceWithStartTime(int numPixels, int numBins, int numEvents,
   // add one to the number of bins as this is histogram
   numBins++;
 
-  EventWorkspace_sptr retVal(new EventWorkspace);
+  auto retVal = boost::make_shared<EventWorkspace>();
   retVal->initialize(numPixels, 1, 1);
 
   // Make fake events
@@ -712,7 +709,7 @@ EventWorkspace_sptr
 CreateGroupedEventWorkspace(std::vector<std::vector<int>> groups, int numBins,
                             double binDelta) {
 
-  EventWorkspace_sptr retVal(new EventWorkspace);
+  auto retVal = boost::make_shared<EventWorkspace>();
   retVal->initialize(1, 2, 1);
 
   for (size_t g = 0; g < groups.size(); g++) {
@@ -749,7 +746,7 @@ CreateGroupedEventWorkspace(std::vector<std::vector<int>> groups, int numBins,
  */
 EventWorkspace_sptr CreateRandomEventWorkspace(size_t numbins, size_t numpixels,
                                                double bin_delta) {
-  EventWorkspace_sptr retVal(new EventWorkspace);
+  auto retVal = boost::make_shared<EventWorkspace>();
   retVal->initialize(numpixels, numbins, numbins - 1);
 
   // and X-axis for references:
@@ -1235,7 +1232,7 @@ RebinnedOutput_sptr CreateRebinnedOutputWorkspace() {
 
 Mantid::DataObjects::PeaksWorkspace_sptr
 createPeaksWorkspace(const int numPeaks, const bool createOrientedLattice) {
-  PeaksWorkspace_sptr peaksWS(new PeaksWorkspace());
+  auto peaksWS = boost::make_shared<PeaksWorkspace>();
   Instrument_sptr inst =
       ComponentCreationHelper::createTestInstrumentRectangular2(1, 10);
   peaksWS->setInstrument(inst);