diff --git a/src/AbstractPluginManager.php b/src/AbstractPluginManager.php
index <HASH>..<HASH> 100644
--- a/src/AbstractPluginManager.php
+++ b/src/AbstractPluginManager.php
@@ -65,8 +65,21 @@ abstract class AbstractPluginManager extends ServiceManager implements ServiceLo
         parent::__construct($configuration);
         $self = $this;
         $this->addInitializer(function ($instance) use ($self) {
+            $locator = $self->getServiceLocator();
+            if (!$locator) {
+                $locator = $self;
+            }
+            if ($instance instanceof ServiceLocatorAwareInterface) {
+                $instance->setServiceLocator($locator);
+            }
+        });
+        $this->addInitializer(function ($instance) use ($self) {
+            $locator = $self->getServiceLocator();
+            if (!$locator instanceof ServiceManager) {
+                $locator = $self;
+            }
             if ($instance instanceof ServiceManagerAwareInterface) {
-                $instance->setServiceManager($self);
+                $instance->setServiceManager($locator);
             }
         });
     }
[zen-<I>][zendframework/zf2#<I>] Added ServiceLocatorAware injector

- to AbstractPluginManager. If there is a parent SM, that is used; if not, the
  plugin manager instance is used. The same pattern is used for
  ServiceManagerAware injection -- if a parent service locator is present and is
  a ServiceManager instance, it's used, otherwise the plugin manager instance is
  used.