diff --git a/indra/newview/llfloatertopobjects.cpp b/indra/newview/llfloatertopobjects.cpp
index 143edb7c4643133145334d8bc2a2a992186445c7..9b19f6f4743482e0e4dd3fad59971c365d2ae4f5 100644
--- a/indra/newview/llfloatertopobjects.cpp
+++ b/indra/newview/llfloatertopobjects.cpp
@@ -514,10 +514,11 @@ void LLFloaterTopObjects::showBeacon()
 	std::string name = first_selected->getColumn(1)->getValue().asString();
 	std::string pos_string =  first_selected->getColumn(3)->getValue().asString();
 
-	LLVector3 pos_agent;
-	S32 count = sscanf(pos_string.c_str(), "%f %f %f", pos_agent.mV + 0, pos_agent.mV + 1, pos_agent.mV + 2);
-	if (count != 3) return;
+	F32 x, y, z;
+	S32 matched = sscanf(pos_string.c_str(), "<%g,%g,%g>", &x, &y, &z);
+	if (matched != 3) return;
 
+	LLVector3 pos_agent(x, y, z);
 	LLVector3d pos_global = gAgent.getPosGlobalFromAgent(pos_agent);
 	LLTracker::trackLocation(pos_global, name, std::string(), LLTracker::LOCATION_ITEM);
 }
@@ -542,11 +543,14 @@ void LLFloaterTopObjects::onTeleportTo()
 
 	std::string pos_string = first_selected->getColumn(3)->getValue().asString();
 
-	LLVector3 pos_agent;
-	S32 count = sscanf(pos_string.c_str(), "%f %f %f", pos_agent.mV + 0, pos_agent.mV + 1, pos_agent.mV + 2);
-	if (count != 3) return;
+	F32 x, y, z;
+	S32 matched = sscanf(pos_string.c_str(), "<%g,%g,%g>", &x, &y, &z);
+	if (matched != 3) return;
 
-	gAgent.teleportViaLocation(gAgent.getPosGlobalFromAgent(pos_agent));
+	LLVector3 pos_agent(x, y, z);
+	LLVector3d pos_global = gAgent.getPosGlobalFromAgent(pos_agent);
+
+	gAgent.teleportViaLocation(pos_global);
 }
 
 void LLFloaterTopObjects::onEstateKick()