diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 3cfb2c5d4a3bd9c4580d6402e9c4cc0eac56cbf1..3fcb5f9f035c8164345cc9ba07d929ffb747d704 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -2279,6 +2279,7 @@ void LLFloaterView::getMinimizePosition(S32 *left, S32 *bottom)
 	S32 floater_header_size = default_params.header_height;
 	static LLUICachedControl<S32> minimized_width ("UIMinimizedWidth", 0);
 	LLRect snap_rect_local = getLocalSnapRect();
+	snap_rect_local.mTop += mVMinimizePositionOffset;
 	for(S32 col = snap_rect_local.mLeft;
 		col < snap_rect_local.getWidth() - minimized_width;
 		col += minimized_width)
@@ -2376,6 +2377,19 @@ BOOL LLFloaterView::allChildrenClosed()
 	return true;
 }
 
+void LLFloaterView::shiftFloaters(S32 x_offset, S32 y_offset)
+{
+	for (child_list_const_iter_t it = getChildList()->begin(); it != getChildList()->end(); ++it)
+	{
+		LLFloater* floaterp = dynamic_cast<LLFloater*>(*it);
+
+		if (floaterp && floaterp->isMinimized())
+		{
+			floaterp->translate(x_offset, y_offset);
+		}
+	}
+}
+
 void LLFloaterView::refresh()
 {
 	// Constrain children to be entirely on the screen
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index 2deae29607c115f997ee816fdef48a8066d46c4b..cd24471345861002b6d911a287551ecb4fb41646 100644
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -449,6 +449,7 @@ class LLFloaterView : public LLUICtrl
 	// Given a child of gFloaterView, make sure this view can fit entirely onscreen.
 	void			adjustToFitScreen(LLFloater* floater, BOOL allow_partial_outside);
 
+	void			setMinimizePositionVerticalOffset(S32 offset) { mVMinimizePositionOffset = offset; }
 	void			getMinimizePosition( S32 *left, S32 *bottom);
 	void			restoreAll();		// un-minimize all floaters
 	typedef std::set<LLView*> skip_list_t;
@@ -465,6 +466,7 @@ class LLFloaterView : public LLUICtrl
 	// attempt to close all floaters
 	void			closeAllChildren(bool app_quitting);
 	BOOL			allChildrenClosed();
+	void			shiftFloaters(S32 x_offset, S32 y_offset);
 
 	LLFloater* getFrontmost() const;
 	LLFloater* getBackmost() const;
@@ -484,6 +486,7 @@ class LLFloaterView : public LLUICtrl
 	BOOL			mFocusCycleMode;
 	S32				mSnapOffsetBottom;
 	S32				mSnapOffsetRight;
+	S32				mVMinimizePositionOffset;
 };
 
 //
diff --git a/indra/newview/llpaneltopinfobar.cpp b/indra/newview/llpaneltopinfobar.cpp
index 15f7195b1a34f7a1d3507408a81bea4a949b5990..640ff9cae73b9e2b1c453b33e41740334c0e81e6 100644
--- a/indra/newview/llpaneltopinfobar.cpp
+++ b/indra/newview/llpaneltopinfobar.cpp
@@ -155,6 +155,8 @@ BOOL LLPanelTopInfoBar::postBuild()
 	mParcelMgrConnection = LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback(
 			boost::bind(&LLPanelTopInfoBar::onAgentParcelChange, this));
 
+	setVisibleCallback(boost::bind(&LLPanelTopInfoBar::onShow, this, _2));
+
 	return TRUE;
 }
 
@@ -168,6 +170,27 @@ void LLPanelTopInfoBar::onNavBarShowParcelPropertiesCtrlChanged()
 	setParcelInfoText(new_text);
 }
 
+// when panel is shown, all minimized floaters should be shifted to prevent overlapping of
+// PanelTopInfoBar. See EXT-7951.
+void LLPanelTopInfoBar::onShow(const LLSD& show)
+{
+	// this height is used as a vertical offset for ALREADY MINIMIZED floaters
+	// when PanelTopInfoBar visibility changes
+	S32 height = getRect().getHeight();
+
+	// this vertical offset is used for a start minimize position of floaters that
+	// are NOT MIMIMIZED YET
+	S32 minimize_pos_offset = 0;
+
+	if (show.asBoolean())
+	{
+		height = minimize_pos_offset = -height;
+	}
+
+	gFloaterView->shiftFloaters(0, height);
+	gFloaterView->setMinimizePositionVerticalOffset(minimize_pos_offset);
+}
+
 void LLPanelTopInfoBar::draw()
 {
 	updateParcelInfoText();
diff --git a/indra/newview/llpaneltopinfobar.h b/indra/newview/llpaneltopinfobar.h
index cf608b88e15e6ee87b2bf6c8f9a7817a18fd83ec..5dbfc051183a07fde8ec91f2269692ed878699ce 100644
--- a/indra/newview/llpaneltopinfobar.h
+++ b/indra/newview/llpaneltopinfobar.h
@@ -52,6 +52,11 @@ class LLPanelTopInfoBar : public LLPanel, public LLSingleton<LLPanelTopInfoBar>,
 	 */
 	void handleLoginComplete();
 
+	/**
+	 * Called when show/hide panel top info bar.
+	 */
+	void onShow(const LLSD& show);
+
 private:
 	class LLParcelChangeObserver;
 
diff --git a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
index d8f4297e0ccbbad71ac5ca8ebc0d8e737ba05cbe..30d3064e143db7a716577268daa3da1193dbdb2e 100644
--- a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
@@ -36,7 +36,7 @@
     enabled="true"
     follows="right|top"
     height="18"
-    image_name="Parcel_VoiceNo_Light"
+    image_name="Parcel_VoiceNo_Dark"
     name="voice_icon"
     top="1"
     visible="false"
@@ -45,7 +45,7 @@
   <icon
     follows="right|top"
     height="18"
-    image_name="Parcel_FlyNo_Light"
+    image_name="Parcel_FlyNo_Dark"
     name="fly_icon"
     top="1"
     visible="false"
@@ -54,7 +54,7 @@
   <icon
     follows="right|top"
     height="18"
-    image_name="Parcel_PushNo_Light"
+    image_name="Parcel_PushNo_Dark"
     name="push_icon"
     top="1"
     visible="false"
@@ -63,7 +63,7 @@
   <icon
     follows="right|top"
     height="18"
-    image_name="Parcel_BuildNo_Light"
+    image_name="Parcel_BuildNo_Dark"
     name="build_icon"
     top="1"
     visible="false"
@@ -72,7 +72,7 @@
   <icon
     follows="right|top"
     height="18"
-    image_name="Parcel_ScriptsNo_Light"
+    image_name="Parcel_ScriptsNo_Dark"
     name="scripts_icon"
     top="1"
     visible="false"