diff --git a/core/Plugin/Manager.php b/core/Plugin/Manager.php
index 8790175128b276eab753299f6f0ee4a09d52bb0f..ce491935ef6f47b95b38d4ea11f80f99181fa8f4 100644
--- a/core/Plugin/Manager.php
+++ b/core/Plugin/Manager.php
@@ -337,6 +337,8 @@ class Manager
      */
     public function deactivatePlugin($pluginName)
     {
+        $this->clearCache($pluginName);
+
         // execute deactivate() to let the plugin do cleanups
         $this->executePluginDeactivate($pluginName);
 
@@ -344,8 +346,6 @@ class Manager
 
         $this->removePluginFromConfig($pluginName);
 
-        $this->clearCache($pluginName);
-
         /**
          * Event triggered after a plugin has been deactivated.
          *
diff --git a/tests/PHPUnit/Integration/Plugin/ManagerTest.php b/tests/PHPUnit/Integration/Plugin/ManagerTest.php
index 83a41aa6e5daaa9bd0a0119a984b30e867ed42dc..d3fea6935c83ed893e0bb1400d073052b160625e 100644
--- a/tests/PHPUnit/Integration/Plugin/ManagerTest.php
+++ b/tests/PHPUnit/Integration/Plugin/ManagerTest.php
@@ -75,6 +75,15 @@ class ManagerTest extends IntegrationTestCase
         $this->assertEquals(array(), $this->manager->getLoadedPlugins());
     }
 
+    public function test_deactivatePlugin()
+    {
+        $this->assertFalse($this->manager->isPluginActivated('ExampleTheme'));
+        $this->manager->activatePlugin('ExampleTheme');
+        $this->assertTrue($this->manager->isPluginActivated('ExampleTheme'));
+        $this->manager->deactivatePlugin('ExampleTheme');
+        $this->assertFalse($this->manager->isPluginActivated('ExampleTheme'));
+    }
+
     private function getCacheForTrackerPlugins()
     {
         return PiwikCache::getEagerCache();