diff --git a/indra/newview/llhudtext.cpp b/indra/newview/llhudtext.cpp
index c87e2fb6586a2351fb4378e3696bf3bb7b1f5248..05c8c236e9a17b423c4bd1573bdd4ab83e1723ee 100755
--- a/indra/newview/llhudtext.cpp
+++ b/indra/newview/llhudtext.cpp
@@ -384,11 +384,21 @@ void LLHUDText::updateVisibility()
 		mPositionAgent -= dir_from_camera * mSourceObject->getVObjRadius();
 	}
 
-	mLastDistance = (mPositionAgent - LLViewerCamera::getInstance()->getOrigin()).magVec();
+	if (!mTextSegments.size())
+	{
+		mVisible = FALSE;
+		return;
+	}
 
+	mLastDistance = (mPositionAgent - LLViewerCamera::getInstance()->getOrigin()).magVec();
 	F32 obj_dist = dist_vec(mSourceObject->getPositionEdit(), LLViewerCamera::getInstance()->getOrigin());
 
-	if (!mTextSegments.size() || (mDoFade && (mLastDistance > mFadeDistance + mFadeRange)) || (obj_dist > MAX_DRAW_DISTANCE))
+	if(mSourceObject->isAttachment())
+	{
+		LLViewerObject* parent = (LLViewerObject*)mSourceObject->getRoot();
+		obj_dist = dist_vec(parent->getPositionEdit(), LLViewerCamera::getInstance()->getOrigin());
+	}
+	if ((mDoFade && (mLastDistance > mFadeDistance + mFadeRange)) || (obj_dist > MAX_DRAW_DISTANCE))
 	{
 		mVisible = FALSE;
 		return;