diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp
index 736164facad118dcc70d657697f8842db7b0e8f8..cd2764ade4d1f9b0aa7f8be88aa402af0ffc830e 100644
--- a/indra/newview/llpanelobject.cpp
+++ b/indra/newview/llpanelobject.cpp
@@ -71,7 +71,7 @@
 // [/RLVa:KB]
 
 #include "lldrawpool.h"
-
+#include "llviewerjointattachment.h"
 //
 // Constants
 //
@@ -395,6 +395,16 @@ void LLPanelObject::getState( )
 	mCtrlPosY->setEnabled(enable_move);
 	mCtrlPosZ->setEnabled(enable_move);
 
+	LLViewerRegion* regionp = objectp->getRegion();
+	F32 width = regionp != nullptr ? regionp->getWidth() : REGION_WIDTH_METERS;
+	bool is_attachment = objectp->isAttachment();
+	mCtrlPosX->setMinValue(is_attachment ? -MAX_ATTACHMENT_DIST : -width);
+	mCtrlPosX->setMaxValue(is_attachment ? MAX_ATTACHMENT_DIST : width);
+	mCtrlPosY->setMinValue(is_attachment ? -MAX_ATTACHMENT_DIST : -width);
+	mCtrlPosY->setMaxValue(is_attachment ? MAX_ATTACHMENT_DIST : width);
+	mCtrlPosZ->setMinValue(is_attachment ? -MAX_ATTACHMENT_DIST : 0);
+	mCtrlPosZ->setMaxValue(is_attachment ? MAX_ATTACHMENT_DIST : 4096);
+
 	if (enable_scale)
 	{
 		vec = objectp->getScale();
diff --git a/indra/newview/llviewerjointattachment.h b/indra/newview/llviewerjointattachment.h
index e5edf2c06b6d974f6a25b30dd2be71997e983d6a..c20ba9c3931f4107d04af10b361e8dac6c37b3b9 100644
--- a/indra/newview/llviewerjointattachment.h
+++ b/indra/newview/llviewerjointattachment.h
@@ -37,6 +37,8 @@
 class LLDrawable;
 class LLViewerObject;
 
+extern const F32 MAX_ATTACHMENT_DIST;
+
 //-----------------------------------------------------------------------------
 // class LLViewerJointAttachment
 //-----------------------------------------------------------------------------