diff --git a/indra/newview/llfloaterexperiences.cpp b/indra/newview/llfloaterexperiences.cpp
index fdc1b473341f0be8e4bfb96996d7e768e9a18211..184e39402a47d229b4db97d300cddd3f8599fd4f 100644
--- a/indra/newview/llfloaterexperiences.cpp
+++ b/indra/newview/llfloaterexperiences.cpp
@@ -74,10 +74,6 @@ BOOL LLFloaterExperiences::postBuild()
 	getChild<LLTabContainer>("xp_tabs")->addTabPanel(new LLPanelExperienceLog());
     resizeToTabs();
 
-   
-    LLEventPumps::instance().obtain("experience_permission").listen("LLFloaterExperiences", 
-        boost::bind(&LLFloaterExperiences::updatePermissions, this, _1));
-     
    	return TRUE;
 }
 
@@ -163,6 +159,10 @@ void LLFloaterExperiences::refreshContents()
 
 void LLFloaterExperiences::onOpen( const LLSD& key )
 {
+    LLEventPumps::instance().obtain("experience_permission").stopListening("LLFloaterExperiences");
+    LLEventPumps::instance().obtain("experience_permission").listen("LLFloaterExperiences",
+        boost::bind(&LLFloaterExperiences::updatePermissions, this, _1));
+
     LLViewerRegion* region = gAgent.getRegion();
     if(region)
     {