diff --git a/amp.module b/amp.module
index 3792dba..bc6dec5 100644
--- a/amp.module
+++ b/amp.module
@@ -337,18 +337,25 @@ function amp_is_amp_request() {
 
     // The current request must have '?amp' in the query string.
     if (isset($_GET['amp'])) {
-      // Ensure that there is a node loaded from the current request, and that
-      // it is a node type which has the AMP view mode enabled.
-      $node = menu_get_object();
-      if ($node && in_array($node->type, amp_get_enabled_types())) {
+      // Mustn't load the node because it could initialize theme() functions
+      // that register default theme instead AMP theme. For avoid this, do a 
+      // lite node composition and checking.
+      $nid = arg(1);
+      // Check if nid is like integer (integer or integer into string).
+      if ($nid && is_numeric($nid) && is_int(+$nid)) {
+        $node = (object) array('nid' => $nid);
         // Do an additional check to ensure the current path is actually the
         // node's public URI. Without this check, this function would return
         // TRUE on the node's edit form.
-        $uri = entity_uri('node', $node);
-        if ($uri['path'] == current_path()) {
-          // Only if all of the above conditions are true is this a valid AMP
-          // request.
-          $result = TRUE;
+        $uri = node_uri($node);
+        if (current_path() == $uri['path']) {
+          $node->type = db_query("SELECT type FROM {node} WHERE nid = :nid", array(':nid' => $nid))->fetchField();
+          // Ensure that it is a node type which has the AMP view mode enabled.
+          if ($node->type && in_array($node->type, amp_get_enabled_types())) {
+            // Only if all of the above conditions are true is this a valid AMP
+            // request.
+            $result = TRUE;
+          }
         }
       }
     }
