diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index ae5dd5a1ce9ce47895c4ecdb045fa692b750ae68..c8e26ecaea5d56e3112297b3740bad4f946f78fe 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -191,9 +191,11 @@ LLFloater::Params::Params()
 	can_tear_off("can_tear_off", true),
 	save_rect("save_rect", false),
 	save_visibility("save_visibility", false),
+	can_dock("can_dock", false),
+	header_height("header_height", 0),
+	legacy_header_height("legacy_header_height", 0),
 	open_callback("open_callback"),
-	close_callback("close_callback"),
-	can_dock("can_dock", false)
+	close_callback("close_callback")
 {
 	visible = false;
 }
@@ -233,6 +235,8 @@ LLFloater::LLFloater(const LLSD& key, const LLFloater::Params& p)
 	mResizable(p.can_resize),
 	mMinWidth(p.min_width),
 	mMinHeight(p.min_height),
+	mHeaderHeight(p.header_height),
+	mLegacyHeaderHeight(p.legacy_header_height),
 	mMinimized(FALSE),
 	mForeground(FALSE),
 	mFirstLook(TRUE),
@@ -274,16 +278,16 @@ LLFloater::LLFloater(const LLSD& key, const LLFloater::Params& p)
 	// chrome floaters don't take focus at all
 	setFocusRoot(!getIsChrome());
 
+	addDragHandle();
+	addResizeCtrls();
+	enableResizeCtrls(mResizable);
+
 	initFloater();
 }
 
 // Note: Floaters constructed from XML call init() twice!
 void LLFloater::initFloater()
 {
-	addDragHandle();
-	
-	addResizeCtrls();
-
 	// Close button.
 	if (mCanClose)
 	{
@@ -323,9 +327,6 @@ void LLFloater::initFloater()
 
 void LLFloater::addDragHandle()
 {
-	static LLUICachedControl<S32> floater_close_box_size ("UIFloaterCloseBoxSize", 0);
-	S32 close_box_size = mCanClose ? floater_close_box_size : 0;
-	
 	if (!mDragHandle)
 	{
 		if (mDragOnLeft)
@@ -346,6 +347,14 @@ void LLFloater::addDragHandle()
 		}
 		addChild(mDragHandle);
 	}
+	layoutDragHandle();
+}
+
+void LLFloater::layoutDragHandle()
+{
+	static LLUICachedControl<S32> floater_close_box_size ("UIFloaterCloseBoxSize", 0);
+	S32 close_box_size = mCanClose ? floater_close_box_size : 0;
+	
 	LLRect rect;
 	if (mDragOnLeft)
 	{
@@ -361,40 +370,17 @@ void LLFloater::addDragHandle()
 }
 
 void LLFloater::addResizeCtrls()
-{
-	for (S32 i = 0; i < 4; i++) 
-	{
-		if (mResizeBar[i])
-		{
-			removeChild(mResizeBar[i]);
-			delete mResizeBar[i];
-			mResizeBar[i] = NULL;
-		}
-		if (mResizeHandle[i])
-		{
-			removeChild(mResizeHandle[i]);
-			delete mResizeHandle[i];
-			mResizeHandle[i] = NULL;
-		}
-	}
-	if( !mResizable )
-	{
-		return;
-	}
-	
+{	
 	// Resize bars (sides)
-	const S32 RESIZE_BAR_THICKNESS = 3;
 	LLResizeBar::Params p;
 	p.name("resizebar_left");
 	p.resizing_view(this);
-	p.rect(LLRect( 0, getRect().getHeight(), RESIZE_BAR_THICKNESS, 0));
 	p.min_size(mMinWidth);
 	p.side(LLResizeBar::LEFT);
 	mResizeBar[LLResizeBar::LEFT] = LLUICtrlFactory::create<LLResizeBar>(p);
 	addChild( mResizeBar[LLResizeBar::LEFT] );
 
 	p.name("resizebar_top");
-	p.rect(LLRect( 0, getRect().getHeight(), getRect().getWidth(), getRect().getHeight() - RESIZE_BAR_THICKNESS));
 	p.min_size(mMinHeight);
 	p.side(LLResizeBar::TOP);
 
@@ -402,15 +388,12 @@ void LLFloater::addResizeCtrls()
 	addChild( mResizeBar[LLResizeBar::TOP] );
 
 	p.name("resizebar_right");
-	p.rect(LLRect(getRect().getWidth() - RESIZE_BAR_THICKNESS, getRect().getHeight(), getRect().getWidth(), 0));
 	p.min_size(mMinWidth);
-	p.side(LLResizeBar::RIGHT);
-	
+	p.side(LLResizeBar::RIGHT);	
 	mResizeBar[LLResizeBar::RIGHT] = LLUICtrlFactory::create<LLResizeBar>(p);
 	addChild( mResizeBar[LLResizeBar::RIGHT] );
 
 	p.name("resizebar_bottom");
-	p.rect(LLRect(0, RESIZE_BAR_THICKNESS, getRect().getWidth(), 0));
 	p.min_size(mMinHeight);
 	p.side(LLResizeBar::BOTTOM);
 	mResizeBar[LLResizeBar::BOTTOM] = LLUICtrlFactory::create<LLResizeBar>(p);
@@ -421,27 +404,69 @@ void LLFloater::addResizeCtrls()
 	// handles must not be mouse-opaque, otherwise they block hover events
 	// to other buttons like the close box. JC
 	handle_p.mouse_opaque(false);
-	handle_p.rect(LLRect( getRect().getWidth() - RESIZE_HANDLE_WIDTH, RESIZE_HANDLE_HEIGHT, getRect().getWidth(), 0));
 	handle_p.min_width(mMinWidth);
 	handle_p.min_height(mMinHeight);
 	handle_p.corner(LLResizeHandle::RIGHT_BOTTOM);
 	mResizeHandle[0] = LLUICtrlFactory::create<LLResizeHandle>(handle_p);
 	addChild(mResizeHandle[0]);
 
-	handle_p.rect(LLRect( getRect().getWidth() - RESIZE_HANDLE_WIDTH, getRect().getHeight(), getRect().getWidth(), getRect().getHeight() - RESIZE_HANDLE_HEIGHT));
 	handle_p.corner(LLResizeHandle::RIGHT_TOP);
 	mResizeHandle[1] = LLUICtrlFactory::create<LLResizeHandle>(handle_p);
 	addChild(mResizeHandle[1]);
 	
-	handle_p.rect(LLRect( 0, RESIZE_HANDLE_HEIGHT, RESIZE_HANDLE_WIDTH, 0 ));
 	handle_p.corner(LLResizeHandle::LEFT_BOTTOM);
 	mResizeHandle[2] = LLUICtrlFactory::create<LLResizeHandle>(handle_p);
 	addChild(mResizeHandle[2]);
 
-	handle_p.rect(LLRect( 0, getRect().getHeight(), RESIZE_HANDLE_WIDTH, getRect().getHeight() - RESIZE_HANDLE_HEIGHT ));
 	handle_p.corner(LLResizeHandle::LEFT_TOP);
 	mResizeHandle[3] = LLUICtrlFactory::create<LLResizeHandle>(handle_p);
 	addChild(mResizeHandle[3]);
+
+	layoutResizeCtrls();
+}
+
+void LLFloater::layoutResizeCtrls()
+{
+	LLRect rect;
+
+	// Resize bars (sides)
+	const S32 RESIZE_BAR_THICKNESS = 3;
+	rect = LLRect( 0, getRect().getHeight(), RESIZE_BAR_THICKNESS, 0);
+	mResizeBar[LLResizeBar::LEFT]->setRect(rect);
+
+	rect = LLRect( 0, getRect().getHeight(), getRect().getWidth(), getRect().getHeight() - RESIZE_BAR_THICKNESS);
+	mResizeBar[LLResizeBar::TOP]->setRect(rect);
+
+	rect = LLRect(getRect().getWidth() - RESIZE_BAR_THICKNESS, getRect().getHeight(), getRect().getWidth(), 0);
+	mResizeBar[LLResizeBar::RIGHT]->setRect(rect);
+
+	rect = LLRect(0, RESIZE_BAR_THICKNESS, getRect().getWidth(), 0);
+	mResizeBar[LLResizeBar::BOTTOM]->setRect(rect);
+
+	// Resize handles (corners)
+	rect = LLRect( getRect().getWidth() - RESIZE_HANDLE_WIDTH, RESIZE_HANDLE_HEIGHT, getRect().getWidth(), 0);
+	mResizeHandle[0]->setRect(rect);
+
+	rect = LLRect( getRect().getWidth() - RESIZE_HANDLE_WIDTH, getRect().getHeight(), getRect().getWidth(), getRect().getHeight() - RESIZE_HANDLE_HEIGHT);
+	mResizeHandle[1]->setRect(rect);
+	
+	rect = LLRect( 0, RESIZE_HANDLE_HEIGHT, RESIZE_HANDLE_WIDTH, 0 );
+	mResizeHandle[2]->setRect(rect);
+
+	rect = LLRect( 0, getRect().getHeight(), RESIZE_HANDLE_WIDTH, getRect().getHeight() - RESIZE_HANDLE_HEIGHT );
+	mResizeHandle[3]->setRect(rect);
+}
+
+void LLFloater::enableResizeCtrls(bool enable)
+{
+	for (S32 i = 0; i < 4; ++i)
+	{
+		mResizeBar[i]->setVisible(enable);
+		mResizeBar[i]->setEnabled(enable);
+
+		mResizeHandle[i]->setVisible(enable);
+		mResizeHandle[i]->setEnabled(enable);
+	}
 }
 
 // virtual
@@ -909,7 +934,8 @@ void LLFloater::handleReshape(const LLRect& new_rect, bool by_user)
 
 void LLFloater::setMinimized(BOOL minimize)
 {
-	static LLUICachedControl<S32> floater_header_size ("UIFloaterHeaderSize", 0);
+	const LLFloater::Params& default_params = LLFloater::getDefaultParams();
+	S32 floater_header_size = default_params.header_height;
 	static LLUICachedControl<S32> minimized_width ("UIMinimizedWidth", 0);
 
 	if (minimize == mMinimized) return;
@@ -1082,7 +1108,8 @@ void LLFloater::setFocus( BOOL b )
 void LLFloater::setRect(const LLRect &rect)
 {
 	LLPanel::setRect(rect);
-	addDragHandle(); // re-add drag handle, sized based on rect
+	layoutDragHandle();
+	layoutResizeCtrls();
 }
 
 // virtual
@@ -1389,9 +1416,9 @@ void LLFloater::onClickMinimize(LLFloater* self)
 
 void LLFloater::onClickTearOff(LLFloater* self)
 {
-	static LLUICachedControl<S32> floater_header_size ("UIFloaterHeaderSize", 0);
 	if (!self)
 		return;
+	S32 floater_header_size = self->mHeaderHeight;
 	LLMultiFloater* host_floater = self->getHost();
 	if (host_floater) //Tear off
 	{
@@ -1681,7 +1708,7 @@ void	LLFloater::setCanTearOff(BOOL can_tear_off)
 void LLFloater::setCanResize(BOOL can_resize)
 {
 	mResizable = can_resize;
-	addResizeCtrls();
+	enableResizeCtrls(can_resize);
 }
 
 void LLFloater::setCanDrag(BOOL can_drag)
@@ -2117,7 +2144,8 @@ void LLFloaterView::focusFrontFloater()
 
 void LLFloaterView::getMinimizePosition(S32 *left, S32 *bottom)
 {
-	static LLUICachedControl<S32> floater_header_size ("UIFloaterHeaderSize", 0);
+	const LLFloater::Params& default_params = LLFloater::getDefaultParams();
+	S32 floater_header_size = default_params.header_height;
 	static LLUICachedControl<S32> minimized_width ("UIMinimizedWidth", 0);
 	S32 col = 0;
 	LLRect snap_rect_local = getLocalSnapRect();
@@ -2551,6 +2579,8 @@ void LLFloater::initFromParams(const LLFloater::Params& p)
 	mResizable = p.can_resize;
 	mMinWidth = p.min_width;
 	mMinHeight = p.min_height;
+	mHeaderHeight = p.header_height;
+	mLegacyHeaderHeight = p.legacy_header_height;
 	mSingleInstance = p.single_instance;
 	mAutoTile = p.auto_tile;
 
@@ -2606,6 +2636,23 @@ bool LLFloater::initFloaterXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr o
 		LLFloater::setFloaterHost(last_host);
 	}
 	
+	// HACK: When we changed the header height to 25 pixels in Viewer 2, rather
+	// than re-layout all the floaters we use this value in pixels to make the
+	// whole floater bigger and change the top-left coordinate for widgets.
+	// The goal is to eventually set mLegacyHeaderHeight to zero, which would
+	// make the top-left corner for widget layout the same as the top-left
+	// corner of the window's content area.  James
+	S32 header_stretch = (mHeaderHeight - mLegacyHeaderHeight);
+	if (header_stretch > 0)
+	{
+		// Stretch the floater vertically, don't move widgets
+		LLRect rect = getRect();
+		rect.mTop += header_stretch;
+
+		// This will also update drag handle, title bar, close box, etc.
+		setRect(rect);
+	}
+
 	BOOL result;
 	{
 		LLFastTimer ft(POST_BUILD);
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index 2fdaecf59ad001ee329fba790f7587a663384135..afdc4ccf00189c4387ff4e35037bad3787791703 100644
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -125,6 +125,8 @@ friend class LLMultiFloater;
 								save_rect,
 								save_visibility,
 								can_dock;
+		Optional<S32>			header_height,
+								legacy_header_height; // HACK see initFromXML()
 		
 		Optional<CommitCallbackParam> open_callback,
 									  close_callback;
@@ -209,6 +211,7 @@ friend class LLMultiFloater;
 	bool			isDragOnLeft() const{ return mDragOnLeft; }
 	S32				getMinWidth() const{ return mMinWidth; }
 	S32				getMinHeight() const{ return mMinHeight; }
+	S32				getHeaderHeight() const { return mHeaderHeight; }
 
 	virtual BOOL	handleMouseDown(S32 x, S32 y, MASK mask);
 	virtual BOOL	handleRightMouseDown(S32 x, S32 y, MASK mask);
@@ -302,7 +305,10 @@ friend class LLMultiFloater;
 	void			buildButtons();
 	BOOL			offerClickToButton(S32 x, S32 y, MASK mask, EFloaterButtons index);
 	void			addResizeCtrls();
+	void			layoutResizeCtrls();
+	void			enableResizeCtrls(bool enable);
 	void 			addDragHandle();
+	void			layoutDragHandle();		// repair layout
 
 public:
 	// Called when floater is opened, passes mKey
@@ -340,6 +346,8 @@ friend class LLMultiFloater;
 	
 	S32				mMinWidth;
 	S32				mMinHeight;
+	S32				mHeaderHeight;		// height in pixels of header for title, drag bar
+	S32				mLegacyHeaderHeight;// HACK see initFloaterXML()
 	
 	BOOL			mMinimized;
 	BOOL			mForeground;
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index cf013efca02cd1cffd61eb184967abc72422eb4a..6e058e4c629bf4a3aa9870e45a3a91a859720df3 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -3435,7 +3435,7 @@ void LLMenuHolderGL::setActivatedItem(LLMenuItemGL* item)
 LLTearOffMenu::LLTearOffMenu(LLMenuGL* menup) : 
 	LLFloater(LLSD())
 {
-	static LLUICachedControl<S32> floater_header_size ("UIFloaterHeaderSize", 0);
+	S32 floater_header_size = getHeaderHeight();
 
 	setName(menup->getName());
 	setTitle(menup->getLabel());
@@ -3479,7 +3479,6 @@ LLTearOffMenu::~LLTearOffMenu()
 
 void LLTearOffMenu::draw()
 {
-	static LLUICachedControl<S32> floater_header_size ("UIFloaterHeaderSize", 0);
 	mMenu->setBackgroundVisible(isBackgroundOpaque());
 	mMenu->needsArrange();
 
diff --git a/indra/llui/llmultifloater.cpp b/indra/llui/llmultifloater.cpp
index e8ce1a8d97977634b342fa82c6af03b94649b2a6..7d21c7e0c18de8462e6b860902bbb330a7183ba8 100644
--- a/indra/llui/llmultifloater.cpp
+++ b/indra/llui/llmultifloater.cpp
@@ -54,7 +54,8 @@ LLMultiFloater::LLMultiFloater(const LLSD& key, const LLFloater::Params& params)
 
 void LLMultiFloater::buildTabContainer()
 {
-	static LLUICachedControl<S32> floater_header_size ("UIFloaterHeaderSize", 0);
+	const LLFloater::Params& default_params = LLFloater::getDefaultParams();
+	S32 floater_header_size = default_params.header_height;
 	
 	LLTabContainer::Params p;
 	p.name(std::string("Preview Tabs"));
@@ -131,7 +132,8 @@ BOOL LLMultiFloater::closeAllFloaters()
 void LLMultiFloater::growToFit(S32 content_width, S32 content_height)
 {
 	static LLUICachedControl<S32> tabcntr_close_btn_size ("UITabCntrCloseBtnSize", 0);
-	static LLUICachedControl<S32> floater_header_size ("UIFloaterHeaderSize", 0);
+	const LLFloater::Params& default_params = LLFloater::getDefaultParams();
+	S32 floater_header_size = default_params.header_height;
 	S32 tabcntr_header_height = LLPANEL_BORDER_WIDTH + tabcntr_close_btn_size;
 	S32 new_width = llmax(getRect().getWidth(), content_width + LLPANEL_BORDER_WIDTH * 2);
 	S32 new_height = llmax(getRect().getHeight(), content_height + floater_header_size + tabcntr_header_height);
@@ -461,7 +463,8 @@ BOOL LLMultiFloater::postBuild()
 void LLMultiFloater::updateResizeLimits()
 {
 	static LLUICachedControl<S32> tabcntr_close_btn_size ("UITabCntrCloseBtnSize", 0);
-	static LLUICachedControl<S32> floater_header_size ("UIFloaterHeaderSize", 0);
+	const LLFloater::Params& default_params = LLFloater::getDefaultParams();
+	S32 floater_header_size = default_params.header_height;
 	S32 tabcntr_header_height = LLPANEL_BORDER_WIDTH + tabcntr_close_btn_size;
 	// initialize minimum size constraint to the original xml values.
 	S32 new_min_width = mOrigMinWidth;
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 7219944fd76112887424a90d849cf46ac00f5db1..5e6678131d20459d4a87b3d78382d10b08afcacc 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -8820,17 +8820,6 @@
       <key>Value</key>
       <real>16</real>
     </map>
-    <key>UIFloaterHeaderSize</key>
-    <map>
-      <key>Comment</key>
-      <string>UI floater header height in pixels</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>S32</string>
-      <key>Value</key>
-      <real>25</real>
-    </map>
     <key>UIFloaterHPad</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp
index dca0773139bf03001499d14036135a821067d443..d1317f7c3681b84f3ca09b1583ed7b004b195bc6 100644
--- a/indra/newview/llfloatercamera.cpp
+++ b/indra/newview/llfloatercamera.cpp
@@ -268,8 +268,8 @@ void LLFloaterCamera::updateState()
 	LLRect controls_rect;
 	if (childGetRect(CONTROLS, controls_rect))
 	{
-		static LLUICachedControl<S32> floater_header_size ("UIFloaterHeaderSize", 0);
-		static S32 height = controls_rect.getHeight() - floater_header_size;
+		S32 floater_header_size = getHeaderHeight();
+		S32 height = controls_rect.getHeight() - floater_header_size;
 		S32 newHeight = rect.getHeight();
 		
 		if (showControls)
diff --git a/indra/newview/llfloatergroupinvite.cpp b/indra/newview/llfloatergroupinvite.cpp
index 3598479305c5bdaa688952dc90949333b2e73f9e..bf484c63433605cfa1fdf3d4f3e58ce6141bcebf 100644
--- a/indra/newview/llfloatergroupinvite.cpp
+++ b/indra/newview/llfloatergroupinvite.cpp
@@ -81,7 +81,7 @@ void LLFloaterGroupInvite::impl::closeFloater(void* data)
 LLFloaterGroupInvite::LLFloaterGroupInvite(const LLUUID& group_id)
 :	LLFloater(group_id)
 {
-	static LLUICachedControl<S32> floater_header_size ("UIFloaterHeaderSize", 0);
+	S32 floater_header_size = getHeaderHeight();
 	LLRect contents;
 
 	mImpl = new impl(group_id);
@@ -114,7 +114,8 @@ LLFloaterGroupInvite::~LLFloaterGroupInvite()
 // static
 void LLFloaterGroupInvite::showForGroup(const LLUUID& group_id, std::vector<LLUUID> *agent_ids)
 {
-	static LLUICachedControl<S32> floater_header_size ("UIFloaterHeaderSize", 0);
+	const LLFloater::Params& floater_params = LLFloater::getDefaultParams();
+	S32 floater_header_size = floater_params.header_height;
 	LLRect contents;
 
 	// Make sure group_id isn't null
diff --git a/indra/newview/llfloaternotificationsconsole.cpp b/indra/newview/llfloaternotificationsconsole.cpp
index f2dff55044aa831f8cf15524c22f7aeadc3f40d4..f20fca1258b8945b41957ce8605ff5666293540b 100644
--- a/indra/newview/llfloaternotificationsconsole.cpp
+++ b/indra/newview/llfloaternotificationsconsole.cpp
@@ -221,7 +221,8 @@ void LLFloaterNotificationConsole::removeChannel(const std::string& name)
 //static 
 void LLFloaterNotificationConsole::updateResizeLimits()
 {
-	static LLUICachedControl<S32> floater_header_size ("UIFloaterHeaderSize", 0);
+	const LLFloater::Params& floater_params = LLFloater::getDefaultParams();
+	S32 floater_header_size = floater_params.header_height;
 
 	LLLayoutStack& stack = getChildRef<LLLayoutStack>("notification_channels");
 	setResizeLimits(getMinWidth(), floater_header_size + HEADER_PADDING + ((NOTIFICATION_PANEL_HEADER_HEIGHT + 3) * stack.getNumPanels()));
diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp
index ac743df4f1c1e5f91e1a94ae6f12940b4a5b3be1..2fe21f28de1b008563570233d9e15244dfdcd531 100644
--- a/indra/newview/llfloateruipreview.cpp
+++ b/indra/newview/llfloateruipreview.cpp
@@ -865,7 +865,8 @@ void LLFloaterUIPreview::displayFloater(BOOL click, S32 ID, bool save)
 	}
 	else																// if it is a panel...
 	{
-		static LLUICachedControl<S32> floater_header_size ("UIFloaterHeaderSize", 0);
+		const LLFloater::Params& floater_params = LLFloater::getDefaultParams();
+		S32 floater_header_size = floater_params.header_height;
 
 		LLPanel::Params panel_params;
 		LLPanel* panel = LLUICtrlFactory::create<LLPanel>(panel_params);	// create a new panel
diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp
index b5aec1b80bc370cdba8b4b9d9438afff2a17918c..4940d9b5bb8be0421263e1b18b5ecd87a9bc172f 100644
--- a/indra/newview/lltexturectrl.cpp
+++ b/indra/newview/lltexturectrl.cpp
@@ -458,7 +458,7 @@ BOOL LLFloaterTexturePicker::postBuild()
 // virtual
 void LLFloaterTexturePicker::draw()
 {
-	static LLUICachedControl<S32> floater_header_size ("UIFloaterHeaderSize", 0);
+	S32 floater_header_size = getHeaderHeight();
 	if (mOwner)
 	{
 		// draw cone of context pointing back to texture swatch	
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 4f07d25b2522ca889be440b837d0530a4ca9cdf5..3d1cb84993e755a1fcb92be14b733a7e667a26a0 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -477,10 +477,10 @@
            scale.left="4" scale.top="24" scale.right="26" scale.bottom="4" />
   <texture name="Window_Foreground" file_name="windows/Window_Foreground.png" preload="true" 
            scale.left="4" scale.top="24" scale.right="26" scale.bottom="4" />
-
-
-
-
+  <texture name="Window_NoTitle_Background" file_name="windows/Window_NoTitle_Background.png" preload="true"
+           scale.left="4" scale.top="24" scale.right="26" scale.bottom="4" />
+  <texture name="Window_NoTitle_Foreground" file_name="windows/Window_NoTitle_Foreground.png" preload="true"
+           scale.left="4" scale.top="24" scale.right="26" scale.bottom="4" />
 
   <!--WARNING OLD ART *do not use*-->
 
diff --git a/indra/newview/skins/default/textures/windows/Window_NoTitle_Background.png b/indra/newview/skins/default/textures/windows/Window_NoTitle_Background.png
new file mode 100644
index 0000000000000000000000000000000000000000..a570ac06bd87ce5ac82ddef4c595a5ffd35ae36b
Binary files /dev/null and b/indra/newview/skins/default/textures/windows/Window_NoTitle_Background.png differ
diff --git a/indra/newview/skins/default/textures/windows/Window_NoTitle_Foreground.png b/indra/newview/skins/default/textures/windows/Window_NoTitle_Foreground.png
new file mode 100644
index 0000000000000000000000000000000000000000..d573e8c69abf0b3df895028843d7a02816749be0
Binary files /dev/null and b/indra/newview/skins/default/textures/windows/Window_NoTitle_Foreground.png differ
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index 29fe046ed3838d243fd4d39b65dbb3fba0beb92c..4e5c8c374776e5c15139730735b988759ca3d6fa 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -3,6 +3,8 @@
  follows="left|top|right"
  height="570"
  layout="topleft"
+ bg_opaque_image="Window_NoTitle_Foreground" 
+ bg_alpha_image="Window_NoTitle_Background" 
  name="toolbox floater"
  help_topic="toolbox_floater"
  save_rect="true"
diff --git a/indra/newview/skins/default/xui/en/widgets/floater.xml b/indra/newview/skins/default/xui/en/widgets/floater.xml
index ece63731666a7a301463e663fcf9ea33c3b98481..82f6d44f78670bd7560b23d497f532e886f0753b 100644
--- a/indra/newview/skins/default/xui/en/widgets/floater.xml
+++ b/indra/newview/skins/default/xui/en/widgets/floater.xml
@@ -6,4 +6,6 @@
          bg_opaque_image="Window_Foreground" 
          bg_alpha_image="Window_Background" 
          background_visible="true"
-         background_opaque="false"/>
+         background_opaque="false"
+         header_height="25"
+         legacy_header_height="18" />