diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 1b53a06a851bf1698a033b7a83b089b1013381f8..778020a92ec408a4c6b940cb6914193d39a611d7 100755
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -4790,6 +4790,17 @@
       <key>Value</key>
       <integer>7</integer>
     </map>
+    <key>MarketplaceListingsSortOrder</key>
+    <map>
+      <key>Comment</key>
+      <string>Specifies sort for marketplace listings</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>U32</string>
+      <key>Value</key>
+      <integer>2</integer>
+    </map>
     <key>InvertMouse</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/llfloatermarketplacelistings.cpp b/indra/newview/llfloatermarketplacelistings.cpp
index eb7601f67e15ca984ff833ded326153c160f3943..b2d36479cd0929c1c894a91440c63e10ccf5b165 100755
--- a/indra/newview/llfloatermarketplacelistings.cpp
+++ b/indra/newview/llfloatermarketplacelistings.cpp
@@ -118,6 +118,9 @@ void LLPanelMarketplaceListings::buildAllPanels()
 	tabs_panel->setCommitCallback(boost::bind(&LLPanelMarketplaceListings::onTabChange, this));
     tabs_panel->selectTabPanel(panel_all_items);      // All panel selected by default
     mRootFolder = panel_all_items->getRootFolder();   // Keep the root of the all panel
+    
+    // Set the default sort order
+    setSortOrder(gSavedSettings.getU32("MarketplaceListingsSortOrder"));
 }
 
 LLInventoryPanel* LLPanelMarketplaceListings::buildInventoryPanel(const std::string& childname, const std::string& filename)
@@ -134,6 +137,23 @@ LLInventoryPanel* LLPanelMarketplaceListings::buildInventoryPanel(const std::str
     return panel;
 }
 
+void LLPanelMarketplaceListings::setSortOrder(U32 sort_order)
+{
+    mSortOrder = sort_order;
+    gSavedSettings.setU32("MarketplaceListingsSortOrder", sort_order);
+    
+    // Set each panel with that sort order
+    LLTabContainer* tabs_panel = getChild<LLTabContainer>("marketplace_filter_tabs");
+    LLInventoryPanel* panel = (LLInventoryPanel*)tabs_panel->getPanelByName("All Items");
+    panel->setSortOrder(mSortOrder);
+    panel = (LLInventoryPanel*)tabs_panel->getPanelByName("Active Items");
+    panel->setSortOrder(mSortOrder);
+    panel = (LLInventoryPanel*)tabs_panel->getPanelByName("Inactive Items");
+    panel->setSortOrder(mSortOrder);
+    panel = (LLInventoryPanel*)tabs_panel->getPanelByName("Unassociated Items");
+    panel->setSortOrder(mSortOrder);
+}
+
 void LLPanelMarketplaceListings::onFilterEdit(const std::string& search_string)
 {
 	// Find active panel
@@ -234,27 +254,16 @@ void LLPanelMarketplaceListings::onViewSortMenuItemClicked(const LLSD& userdata)
         // We're making sort options exclusive, default is SO_FOLDERS_BY_NAME
         if (chosen_item == "sort_by_stock_amount")
         {
-            mSortOrder = LLInventoryFilter::SO_FOLDERS_BY_WEIGHT;
+            setSortOrder(LLInventoryFilter::SO_FOLDERS_BY_WEIGHT);
         }
         else if (chosen_item == "sort_by_name")
         {
-            mSortOrder = LLInventoryFilter::SO_FOLDERS_BY_NAME;
+            setSortOrder(LLInventoryFilter::SO_FOLDERS_BY_NAME);
         }
         else if (chosen_item == "sort_by_recent")
         {
-            mSortOrder = LLInventoryFilter::SO_DATE;
+            setSortOrder(LLInventoryFilter::SO_DATE);
         }
-        //mSortOrder = (mSortOrder == LLInventoryFilter::SO_FOLDERS_BY_NAME ? LLInventoryFilter::SO_FOLDERS_BY_WEIGHT : LLInventoryFilter::SO_FOLDERS_BY_NAME);
-        // Set each panel with that sort order
-        LLTabContainer* tabs_panel = getChild<LLTabContainer>("marketplace_filter_tabs");
-        LLInventoryPanel* panel = (LLInventoryPanel*)tabs_panel->getPanelByName("All Items");
-        panel->setSortOrder(mSortOrder);
-        panel = (LLInventoryPanel*)tabs_panel->getPanelByName("Active Items");
-        panel->setSortOrder(mSortOrder);
-        panel = (LLInventoryPanel*)tabs_panel->getPanelByName("Inactive Items");
-        panel->setSortOrder(mSortOrder);
-        panel = (LLInventoryPanel*)tabs_panel->getPanelByName("Unassociated Items");
-        panel->setSortOrder(mSortOrder);
 	}
     // Filter option
     else if (chosen_item == "show_only_listing_folders")
diff --git a/indra/newview/llfloatermarketplacelistings.h b/indra/newview/llfloatermarketplacelistings.h
index 9fad31c4560df212031ca17c9a1226099719f76a..ffc098e28a238ef1de11a9c90d3e0a5fc6811367 100755
--- a/indra/newview/llfloatermarketplacelistings.h
+++ b/indra/newview/llfloatermarketplacelistings.h
@@ -75,6 +75,8 @@ class LLPanelMarketplaceListings : public LLPanel
     void onTabChange();
     void onFilterEdit(const std::string& search_string);
     
+    void setSortOrder(U32 sort_order);
+    
     LLFolderView*     mRootFolder;
     LLButton*         mAuditBtn;
 	LLFilterEditor*	  mFilterEditor;