diff --git a/plugins/entity/PanelizerEntityDefault.class.php b/plugins/entity/PanelizerEntityDefault.class.php
index e3781bb..3a0f4ac 100644
--- a/plugins/entity/PanelizerEntityDefault.class.php
+++ b/plugins/entity/PanelizerEntityDefault.class.php
@@ -1200,6 +1200,9 @@ abstract class PanelizerEntityDefault implements PanelizerEntityInterface {
    * @param string $address
    *   An optional address to send to the renderer to use for addressable
    *   content.
+   * @param array $extra_contexts
+   *   An optional array of extra context objects that will be added to the
+   *   display.
    *
    * @return array
    *   If the entity isn't panelized, this returns NULL. Otherwise, it returns an
@@ -1208,7 +1211,7 @@ abstract class PanelizerEntityDefault implements PanelizerEntityInterface {
    *   - 'no_blocks': Boolean defining if the panels display wants to hide core
    *      blocks or not when being rendered.
    */
-  function render_entity($entity, $args = array(), $address = NULL) {
+  function render_entity($entity, $args = array(), $address = NULL, $extra_contexts = array()) {
     if (empty($entity->panelizer) || empty($entity->panelizer->display)) {
       return FALSE;
     }
@@ -1217,7 +1220,7 @@ abstract class PanelizerEntityDefault implements PanelizerEntityInterface {
     $panelizer = $entity->panelizer;
     $display = $entity->panelizer->display;
 
-    $display->context = $this->get_contexts($panelizer, $entity);
+    $display->context = $this->get_contexts($panelizer, $entity) + $extra_contexts;
     $display->args = $args;
     $display->css_id = $panelizer->css_id;
 
diff --git a/plugins/task_handlers/panelizer_node.inc b/plugins/task_handlers/panelizer_node.inc
index c91823b..8597b17 100644
--- a/plugins/task_handlers/panelizer_node.inc
+++ b/plugins/task_handlers/panelizer_node.inc
@@ -82,6 +82,8 @@ $plugin = array(
  * Figure out the correct context to use for this panelizer.
  */
 function _panelizer_panelizer_task_get_context($handler, $contexts) {
+  $contexts = ctools_context_handler_get_handler_contexts($contexts, $handler);
+
   if (isset($handler->conf['context']) && !empty($contexts[$handler->conf['context']])) {
     return $contexts[$handler->conf['context']];
   }
@@ -97,6 +99,33 @@ function _panelizer_panelizer_task_get_context($handler, $contexts) {
 }
 
 /**
+ * Get extra contexts to pass from page manager to panelizer.
+ * 
+ * @param $handler
+ *   The handler object.
+ * @param $base_contexts
+ *   The base contexts from page manager.
+ * @param $context
+ *   The context used as a panelized entity.
+ *   
+ * @return array
+ *   All contexts defined in page manager other than the panelized entity
+ *   context.
+ */
+function _panelizer_panelizer_task_get_extra_contexts($handler, $base_contexts, $context) {
+  $extra_contexts = ctools_context_handler_get_handler_contexts($base_contexts, $handler);
+
+  // Prevent the panelized context from appearing again in the extra contexts.
+  foreach ($extra_contexts as $id => $extra_context) {
+    if ($extra_context->identifier == $context->identifier) {
+      unset($extra_contexts[$id]);
+    }
+  }
+
+  return $extra_contexts;
+}
+
+/**
  * Provide appropriate contextual links for Panelizer controled entities.
  */
 function panelizer_panelizer_task_contextual_link($handler, $plugin, $contexts, $args) {
@@ -238,7 +267,8 @@ function panelizer_panelizer_task_render($handler, $base_contexts, $args, $test
   $address = implode('::', array('page_manager', $handler->task, $handler->subtask, $handler->name, implode('..', $args)));
 
   if ($entity_handler = panelizer_entity_plugin_get_handler($entity_type)) {
-    return $entity_handler->render_entity($context->data, $args, $address);
+    $extra_contexts = _panelizer_panelizer_task_get_extra_contexts($handler, $base_contexts, $context);
+    return $entity_handler->render_entity($context->data, $args, $address, $extra_contexts);
   }
 }
 
