diff --git a/doc/contributions.txt b/doc/contributions.txt
index 4d2584f1eb3675bb2fd7ff494758264e50995599..0c360e7f84de0a8ed6e1823bef38bbbb99a33936 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -33,6 +33,7 @@ Alissa Sabre
 	VWR-1410
 	VWR-2116
 	VWR-2826
+	VWR-4010
 Angus Boyd
 	VWR-592
 Argent Stonecutter
@@ -151,6 +152,8 @@ Kage Pixel
 Kunnis Basiat
 	VWR-82
 	VWR-102
+march Korda
+	SVC-1020
 Matthew Dowd
 	VWR-1344
 	VWR-1736
diff --git a/indra/llcommon/lluri.cpp b/indra/llcommon/lluri.cpp
index 5e4dec7f82ce3f57b41b713676386089d5c7c360..deeee3173dfd1b5e251d10a1f5b91120067e554d 100644
--- a/indra/llcommon/lluri.cpp
+++ b/indra/llcommon/lluri.cpp
@@ -57,7 +57,9 @@ std::string LLURI::escape(const std::string& str, const std::string & allowed)
 		  {
 		    ostr << "%"
 			 << std::uppercase << std::hex << std::setw(2) << std::setfill('0')
-			 << static_cast<U32>(c);
+			 // VWR-4010 Cannot cast to U32 because sign-extension on 
+			 // chars > 128 will result in FFFFFFC3 instead of F3.
+			 << static_cast<S32>(static_cast<U8>(c));
 		  }
 		else
 		  {