diff --git a/indra/newview/app_settings/settings_alchemy.xml b/indra/newview/app_settings/settings_alchemy.xml
index 0fbf3b24a641cbcdab7bf9816bbc942aa4ddaf83..92cf017d4d7edec26c50046bb138f9ffd113362b 100644
--- a/indra/newview/app_settings/settings_alchemy.xml
+++ b/indra/newview/app_settings/settings_alchemy.xml
@@ -2490,5 +2490,19 @@
             <key>Value</key>
             <string>All</string>
         </map>
+        <key>ShowAdvancedHoverTips</key>
+        <map>
+            <key>Comment</key>
+            <string>
+                Toggles more hover tips details.
+            </string>
+            <key>Persist</key>
+            <integer>1</integer>
+            <key>Type</key>
+            <string>Boolean</string>
+            <key>Value</key>
+            <integer>0</integer>
+        </map>
     </map>
-</llsd>
\ No newline at end of file
+</llsd>
+
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index f69e2c8165577f9c3b4d12e2bf07c6007e55d5b5..1b5d491174a0bf0de3b6c3ecfad4cf454fc36717 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -76,6 +76,8 @@
 #include "rlvhandler.h"
 // [/RLVa:KB]
 #include "alcinematicmode.h"
+#include "llviewerregion.h"
+#include "llmeshrepository.h"
 
 extern BOOL gDebugClicks;
 
@@ -1311,7 +1313,50 @@ BOOL LLToolPie::handleTooltipObject( LLViewerObject* hover_object, std::string l
                 }
             }
 
+            if (gSavedSettings.getBool("ShowAdvancedHoverTips"))
+            {
+                LLStringUtil::format_map_t args;
+                // Get Position
+                LLViewerRegion* region = gAgent.getRegion();
+                if (region)
+                {
+                    LLVector3 objectPosition = region->getPosRegionFromGlobal(hover_object->getPositionGlobal());
+                    if (!RlvActions::isRlvEnabled() || RlvActions::canShowLocation())
+                    {
+                        //Check if we are in the same region, otherwise it shows large negitive position numbers.
+                        if (hover_object->getRegion() && gAgent.getRegion() && hover_object->getRegion()->getRegionID() == gAgent.getRegion()->getRegionID())
+                        {
+                            args["OBJECT_POSITION"] =
+                                llformat("<%.02f, %.02f, %.02f>", objectPosition.mV[VX], objectPosition.mV[VY], objectPosition.mV[VZ]);
+                            tooltip_msg.append("\n" + LLTrans::getString("TooltipPosition", args));
+                        }                        
+                    }
+
+                    // Get Distance
+                    F32 distance            = (objectPosition - region->getPosRegionFromGlobal(gAgent.getPositionGlobal())).magVec();
+                    args["OBJECT_DISTANCE"] = llformat("%.02f", distance);
+                    tooltip_msg.append("\n" + LLTrans::getString("TooltipDistance", args));
+                }
+
+                // Get Prim Count
+                args["PRIM_COUNT"] = llformat("%d", LLSelectMgr::getInstance()->getHoverObjects()->getObjectCount());
+                tooltip_msg.append("\n" + LLTrans::getString("TooltipPrimCount", args));
 
+                // Get Prim Land Impact
+                if (gMeshRepo.meshRezEnabled())
+                {
+                    S32 cost = LLSelectMgr::getInstance()->getHoverObjects()->getSelectedLinksetCost();
+                    if (cost > 0)
+                    {
+                        args["PRIM_COST"] = llformat("%d", cost);
+                        tooltip_msg.append("\n" + LLTrans::getString("TooltipPrimCost", args));
+                    }
+                    else
+                    {
+                        tooltip_msg.append("\n" + LLTrans::getString("TooltipPrimCostLoading"));
+                    }
+                }
+            }
             // Avoid showing tip over media that's displaying unless it's for sale
             // also check the primary node since sometimes it can have an action even though
             // the root node doesn't
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 78d3e4d4a8d6ef32b567bf56dc3de8bd687d8a3f..48ae4619ee3fbb0781ea8779919e28a708d52f76 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -4560,4 +4560,19 @@ and report the problem.
      name="Permanent">
 		Permanent
 	</string>
+    <string name="TooltipPrimCount">
+        Prims: [PRIM_COUNT]
+    </string>
+    <string name="TooltipPrimCost">
+        Land Impact: [PRIM_COST]
+    </string>
+    <string name="TooltipPrimCostLoading">
+        Loading Land Impact...
+    </string>
+    <string name="TooltipPosition">
+        Position: [OBJECT_POSITION]
+    </string>
+    <string name="TooltipDistance">
+        Distance: [OBJECT_DISTANCE]
+    </string>
 </strings>