diff --git a/indra/llui/llbadge.cpp b/indra/llui/llbadge.cpp
index 15b6899d74660cc49d7605008dd9ab120a2f605c..589b75ab5bd8e1cd27a50d803bb33684c997b12a 100644
--- a/indra/llui/llbadge.cpp
+++ b/indra/llui/llbadge.cpp
@@ -102,6 +102,7 @@ LLBadge::LLBadge(const LLBadge::Params& p)
 	, mPaddingHoriz(p.padding_horiz)
 	, mPaddingVert(p.padding_vert)
 	, mParentScroller(NULL)
+	, mDrawAtParentTop(false)
 {
 	if (mImage.isNull())
 	{
@@ -307,7 +308,14 @@ void LLBadge::draw()
 			// Compute y position
 			if (mLocationOffsetVCenter == BADGE_OFFSET_NOT_SPECIFIED)
 			{
-				badge_center_y = owner_rect.mBottom + owner_rect.getHeight() * mLocationPercentVCenter;
+				if(mDrawAtParentTop)
+				{
+					badge_center_y = owner_rect.mTop - badge_height * 0.5f - 1;
+				}
+				else
+				{
+					badge_center_y = owner_rect.mBottom + owner_rect.getHeight() * mLocationPercentVCenter;
+				}
 			}
 			else
 			{
diff --git a/indra/llui/llbadge.h b/indra/llui/llbadge.h
index 4b21a71aaa3c4ef5a37d1d56d5cb4562c5504bb9..55f92e6e34ae05bb08d4a256aaee26a46820a347 100644
--- a/indra/llui/llbadge.h
+++ b/indra/llui/llbadge.h
@@ -137,6 +137,8 @@ class LLBadge
 	const std::string	getLabel() const { return wstring_to_utf8str(mLabel); }
 	void				setLabel( const LLStringExplicit& label);
 
+	void				setDrawAtParentTop(bool draw_at_top) { mDrawAtParentTop = draw_at_top;}
+
 private:
 	LLPointer< LLUIImage >	mBorderImage;
 	LLUIColor				mBorderColor;
@@ -164,6 +166,7 @@ class LLBadge
 	F32						mPaddingVert;
 
 	LLScrollContainer*		mParentScroller;
+	bool					mDrawAtParentTop;
 };
 
 // Build time optimization, generate once in .cpp file
diff --git a/indra/llui/llbadgeowner.cpp b/indra/llui/llbadgeowner.cpp
index 55e64bb9405a3a57ca91966c415c2d63d86e2978..0557cd437568df9ddbbe3c23c8d4216edfb4e6e7 100644
--- a/indra/llui/llbadgeowner.cpp
+++ b/indra/llui/llbadgeowner.cpp
@@ -64,6 +64,14 @@ void LLBadgeOwner::setBadgeVisibility(bool visible)
 	}
 }
 
+void LLBadgeOwner::setDrawBadgeAtTop(bool draw_at_top)
+{
+	if (mBadge)
+	{
+		mBadge->setDrawAtParentTop(draw_at_top);
+	}
+}
+
 void LLBadgeOwner::addBadgeToParentHolder()
 {
 	LLView * owner_view = mBadgeOwnerView.get();
diff --git a/indra/llui/llbadgeowner.h b/indra/llui/llbadgeowner.h
index 53c2de95c8d8131b34655861672101800739c42b..01ed95f3a3efe30be79e8ae680956122a84315e3 100644
--- a/indra/llui/llbadgeowner.h
+++ b/indra/llui/llbadgeowner.h
@@ -45,6 +45,7 @@ class LLBadgeOwner
 	
 	bool hasBadgeHolderParent() const { return mHasBadgeHolderParent; };
 	void setBadgeVisibility(bool visible);
+	void setDrawBadgeAtTop(bool draw_at_top);
 
 private:
 
diff --git a/indra/newview/llpanelmarketplaceinboxinventory.cpp b/indra/newview/llpanelmarketplaceinboxinventory.cpp
index 2d2ba30e9b26ec51983eaffcada50c7d1a160e5e..f089faea097b523b51a4949e644eaadfed68edd5 100644
--- a/indra/newview/llpanelmarketplaceinboxinventory.cpp
+++ b/indra/newview/llpanelmarketplaceinboxinventory.cpp
@@ -139,6 +139,7 @@ void LLInboxFolderViewFolder::draw()
 	if (!hasBadgeHolderParent())
 	{
 		addBadgeToParentHolder();
+		setDrawBadgeAtTop(true);
 	}
 
 	setBadgeVisibility(mFresh);