diff --git a/indra/llui/lldockablefloater.cpp b/indra/llui/lldockablefloater.cpp
index ca2dc644a488e70e005caf5239c1e7d05d669a31..aea58be12afaa3d6addcf5092ecbeca3fbce36bc 100644
--- a/indra/llui/lldockablefloater.cpp
+++ b/indra/llui/lldockablefloater.cpp
@@ -162,10 +162,15 @@ void LLDockableFloater::setVisible(BOOL visible)
 
 void LLDockableFloater::setMinimized(BOOL minimize)
 {
-	if(minimize)
+	if(minimize && isDocked())
 	{
+		// minimizing a docked floater just hides it
 		setVisible(FALSE);
 	}
+	else
+	{
+		LLFloater::setMinimized(minimize);
+	}
 }
 
 LLView * LLDockableFloater::getDockWidget()
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 0749093777bc86d7b1be80c5c2a8b8697c18e554..bd537bfb1995f85198bd9f2181b64eb75af0bced 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -1479,6 +1479,7 @@ BOOL LLFloater::handleMouseDown(S32 x, S32 y, MASK mask)
 		if(offerClickToButton(x, y, mask, BUTTON_CLOSE)) return TRUE;
 		if(offerClickToButton(x, y, mask, BUTTON_RESTORE)) return TRUE;
 		if(offerClickToButton(x, y, mask, BUTTON_TEAR_OFF)) return TRUE;
+		if(offerClickToButton(x, y, mask, BUTTON_DOCK)) return TRUE;
 
 		// Otherwise pass to drag handle for movement
 		return mDragHandle->handleMouseDown(x, y, mask);
@@ -1584,6 +1585,12 @@ void LLFloater::setDocked(bool docked, bool pop_on_undock)
 	{
 		mDocked = docked;
 		mButtonsEnabled[BUTTON_DOCK] = !mDocked;
+
+		if (mDocked)
+		{
+			setMinimized(FALSE);
+		}
+
 		updateTitleButtons();
 
 		storeDockStateControl();
diff --git a/indra/newview/lldebugview.cpp b/indra/newview/lldebugview.cpp
index cc6ba05e7e197f5e2da6e723c48d243c64cd2f7e..ba511a36931f9cf85b62285b90c456a2297ca5c8 100644
--- a/indra/newview/lldebugview.cpp
+++ b/indra/newview/lldebugview.cpp
@@ -147,3 +147,12 @@ LLDebugView::~LLDebugView()
 	gTextureCategoryView = NULL;
 }
 
+void LLDebugView::draw()
+{
+	LLView* floater_snap_region = getRootView()->getChildView("floater_snap_region");
+	LLRect debug_rect;
+	floater_snap_region->localRectToOtherView(floater_snap_region->getLocalRect(), &debug_rect, getParent());
+
+	setShape(debug_rect);
+	LLView::draw();
+}
diff --git a/indra/newview/lldebugview.h b/indra/newview/lldebugview.h
index 20262fc89e5a9042c839331893c057a5cdd2982d..907a42c981eae3f7b28682de8e0bffac42195745 100644
--- a/indra/newview/lldebugview.h
+++ b/indra/newview/lldebugview.h
@@ -55,6 +55,7 @@ class LLDebugView : public LLView
 	~LLDebugView();
 
 	void init();
+	void draw();
 
 	void setStatsVisible(BOOL visible);