diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index ed03645944a395fbaaaec5a40e8a4870cc29d677..5175583dc967113e1c46a0562bd2ae6752a4ce38 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -269,9 +269,6 @@ void LLTextBase::initFromParams(const LLTextBase::Params& p)
 	{
 		mReadOnly = p.read_only;
 	}
-
-	// HACK:  text editors always need to be enabled so that we can scroll
-	LLView::setEnabled(true);
 }
 
 bool LLTextBase::truncate()
diff --git a/indra/llui/lltextbox.cpp b/indra/llui/lltextbox.cpp
index a1f5b5726bf8fb5c0e01d32e50d545eccdb3a9ff..686179b94e548f10371ca063eb0b969af1ab1a35 100644
--- a/indra/llui/lltextbox.cpp
+++ b/indra/llui/lltextbox.cpp
@@ -119,6 +119,17 @@ BOOL LLTextBox::handleHover(S32 x, S32 y, MASK mask)
 	return handled;
 }
 
+void LLTextBox::setEnabled(BOOL enabled)
+{
+	// just treat enabled as read-only flag
+	bool read_only = !enabled;
+	if (read_only != mReadOnly)
+	{
+		LLTextBase::setReadOnly(read_only);
+		updateSegments();
+	}
+}
+
 void LLTextBox::setText(const LLStringExplicit& text , const LLStyle::Params& input_params )
 {
 	// does string argument insertion
diff --git a/indra/llui/lltextbox.h b/indra/llui/lltextbox.h
index 3a045534d38d781b31fad0528a79d12fc627cb3f..b2ccde94c649502b6364e718b740f013cabf7cf3 100644
--- a/indra/llui/lltextbox.h
+++ b/indra/llui/lltextbox.h
@@ -58,6 +58,8 @@ class LLTextBox :
 	/*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask);
 	/*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask);
 
+	/*virtual*/ void setEnabled(BOOL enabled);
+
 	/*virtual*/ void setText( const LLStringExplicit& text, const LLStyle::Params& input_params = LLStyle::Params() );
 	
 	void			setRightAlign()							{ mHAlign = LLFontGL::RIGHT; }
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index 130cda3784ad7bce63daa23ace8e24309894b3a7..6781c23416ac6a9b465c24f8d2bbd465eebb017c 100644
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -289,6 +289,9 @@ void LLTextEditor::initFromParams( const LLTextEditor::Params& p)
 {
 	LLTextBase::initFromParams(p);
 
+	// HACK:  text editors always need to be enabled so that we can scroll
+	LLView::setEnabled(true);
+
 	if (p.commit_on_focus_lost.isProvided())
 	{
 		mCommitOnFocusLost = p.commit_on_focus_lost;
diff --git a/indra/newview/skins/default/xui/en/widgets/text.xml b/indra/newview/skins/default/xui/en/widgets/text.xml
index 3006df22b878e413c5c0a0fbce926fd92ddaf610..3fa3f3eb902390fce660935a356f22e7ce84b428 100644
--- a/indra/newview/skins/default/xui/en/widgets/text.xml
+++ b/indra/newview/skins/default/xui/en/widgets/text.xml
@@ -8,7 +8,7 @@
       halign="left" 
       h_pad="0" 
       allow_scroll="false"
-      text_readonly_color="LabelDisabledColor"
+      text_readonly_color="LabelTextColor"
       bg_writeable_color="FloaterDefaultBackgroundColor" 
       use_ellipses="false"
       bg_visible="false" 
diff --git a/indra/newview/skins/default/xui/en/widgets/text_editor.xml b/indra/newview/skins/default/xui/en/widgets/text_editor.xml
index 2ced8b1b4ba33661c0028aae6b8d0c5a41f70182..af2e17fc3f56951e413f6d30e0208074f9731481 100644
--- a/indra/newview/skins/default/xui/en/widgets/text_editor.xml
+++ b/indra/newview/skins/default/xui/en/widgets/text_editor.xml
@@ -2,4 +2,5 @@
 <!-- Core parameters are in simple_text_editor.xml -->
 <text_editor
   allow_html="false"
+  text_readonly_color="LabelDisabledColor"
   show_context_menu="true"/>