diff --git a/indra/llplugin/llpluginprocessparent.cpp b/indra/llplugin/llpluginprocessparent.cpp
index 32a16a558f7af33756cbc6a2d39fb9db4ecdbc9b..680a402751b23bc01cfcc2757736dfcda0a3340e 100644
--- a/indra/llplugin/llpluginprocessparent.cpp
+++ b/indra/llplugin/llpluginprocessparent.cpp
@@ -35,7 +35,6 @@
 #include "stringize.h"
 
 #include "llapr.h"
-#include <boost/lexical_cast.hpp>
 
 //virtual 
 LLPluginProcessParentOwner::~LLPluginProcessParentOwner()
@@ -461,7 +460,7 @@ void LLPluginProcessParent::idle(void)
 				    // Launch the plugin process.
 				
 				    // Only argument to the launcher is the port number we're listening on
-					mProcessParams.args.add(boost::lexical_cast<std::string>(mBoundPort));
+					mProcessParams.args.add(std::to_string(mBoundPort));
 				    if (! (mProcess = LLProcess::create(mProcessParams)))
 				    {
 					    errorState();
diff --git a/indra/llprimitive/lldaeloader.cpp b/indra/llprimitive/lldaeloader.cpp
index 4029fe386e028d6297148797801f8f34fc40b4ea..c4622c6fa3dfd0d0f23871bd71483e5168d02196 100644
--- a/indra/llprimitive/lldaeloader.cpp
+++ b/indra/llprimitive/lldaeloader.cpp
@@ -46,7 +46,6 @@
 #include <dom/domScale.h>
 #include <dom/domTranslate.h>
 
-#include <boost/lexical_cast.hpp>
 #include <boost/algorithm/string/replace.hpp>
 #include <boost/regex.hpp>
 
diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp
index bbf1f375720510f037e6b705ed1e976777cb925a..b97942455da2e5353cd0ba7173a875f0f172362b 100644
--- a/indra/newview/llpreviewtexture.cpp
+++ b/indra/newview/llpreviewtexture.cpp
@@ -55,8 +55,6 @@
 #include "llviewertexturelist.h"
 #include "lllineeditor.h"
 
-#include <boost/lexical_cast.hpp>
-
 const S32 CLIENT_RECT_VPAD = 4;
 
 const F32 SECONDS_TO_SHOW_FILE_SAVED_MSG = 8.f;
@@ -626,7 +624,7 @@ void LLPreviewTexture::adjustAspectRatio()
 			{
 				// No existing ratio found, create an element that will show image at original ratio
 				populateRatioList(); // makes sure previous custom ratio is cleared
-				std::string ratio = boost::lexical_cast<std::string>(num)+":" + boost::lexical_cast<std::string>(denom);
+				std::string ratio = std::to_string(num) + ":" + std::to_string(denom);
 				mRatiosList.push_back(ratio);
 				combo->add(ratio);
 				combo->setCurrentByIndex(mRatiosList.size()- 1);
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index bced93ec8a24d4866d710c9a812a170f136444a0..812ed3567b23f5eef30c42d7410b7e10eefd26cc 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -27,8 +27,6 @@
 
 #include "llviewerprecompiledheaders.h"
 
-#include <boost/lexical_cast.hpp>
-
 #include "llfeaturemanager.h"
 #include "llviewershadermgr.h"
 
@@ -837,8 +835,7 @@ BOOL LLViewerShaderMgr::loadBasicShaders()
 	shaders.push_back( std::make_pair( "objects/nonindexedTextureV.glsl",		1 ) );
 
 	boost::unordered_map<std::string, std::string> attribs;
-	attribs["MAX_JOINTS_PER_MESH_OBJECT"] = 
-		boost::lexical_cast<std::string>(LLSkinningUtil::getMaxJointCount());
+	attribs["MAX_JOINTS_PER_MESH_OBJECT"] = std::to_string(LLSkinningUtil::getMaxJointCount());
 
 	// We no longer have to bind the shaders to global glhandles, they are automatically added to a map now.
 	for (U32 i = 0; i < shaders.size(); i++)
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index bfc868edd69403cb530611fba67494823df242ea..b360f509d93f8221aefe4ef00353b8f59f67d2e8 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -122,8 +122,6 @@
 #include "llrendersphere.h"
 #include "llslurl.h"
 
-#include <boost/lexical_cast.hpp>
-
 #include <absl/hash/hash.h>
 
 extern F32 SPEED_ADJUST_MAX;
@@ -4312,8 +4310,8 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 	}
 
     LLScopedContextString str("updateCharacter " + getFullname() + " is_control_avatar "
-                              + boost::lexical_cast<std::string>(is_control_avatar) 
-                              + " is_attachment " + boost::lexical_cast<std::string>(is_attachment));
+                              + std::to_string(is_control_avatar) 
+                              + " is_attachment " + std::to_string(is_attachment));
 
 	// For fading out the names above heads, only let the timer
 	// run if we're visible.