diff --git a/core/lib/Drupal/Core/Template/TwigTemplate.php b/core/lib/Drupal/Core/Template/TwigTemplate.php
index ee864ca..cb2d91d 100644
--- a/core/lib/Drupal/Core/Template/TwigTemplate.php
+++ b/core/lib/Drupal/Core/Template/TwigTemplate.php
@@ -41,8 +41,9 @@
    */
   final protected function getContextReference(&$context, $item)
   {
-    // Optimized version
-    if (!isset($context[$item])) {
+    // Optimized version. NULL is a valid value for $context[$item], we only
+    // want to error if it hasn't been defined at all.
+    if (!isset($context[$item]) && !array_key_exists($item, $context)) {
       // We don't want to throw an exception, but issue a warning instead.
       // This is the easiest way to do so.
       // @todo Decide based on prod vs. dev setting
diff --git a/core/modules/system/lib/Drupal/system/Tests/Theme/ThemeTestTwig.php b/core/modules/system/lib/Drupal/system/Tests/Theme/ThemeTestTwig.php
index c62f7c3..8ca0d03 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Theme/ThemeTestTwig.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Theme/ThemeTestTwig.php
@@ -69,4 +69,17 @@ function testFindThemeTemplates() {
     $templates = drupal_find_theme_templates($cache, '.html.twig', drupal_get_path('theme', 'test_theme_twig'));
     $this->assertEqual($templates['node__1']['template'], 'node--1', 'Template node--1.html.twig was found in test_theme_twig.');
   }
+
+  /**
+   * Tests that the Twig engine handles PHP data correctly.
+   */
+  function testTwigVariableDataTypes() {
+    // Test NULL values.
+    // @todo Test multiple PHP data types.
+    config('system.theme')
+      ->set('default', 'test_theme_twig')
+      ->save();
+    $this->drupalGet('theme-test/template-test');
+    $this->assertRaw('<p id="null-test">null: </p>', t('NULL values render as empty strings in Twig templates.'));
+  }
 }
diff --git a/core/modules/system/tests/themes/test_theme_twig/test_theme_twig.theme b/core/modules/system/tests/themes/test_theme_twig/test_theme_twig.theme
new file mode 100644
index 0000000..1d7fd7b
--- /dev/null
+++ b/core/modules/system/tests/themes/test_theme_twig/test_theme_twig.theme
@@ -0,0 +1,21 @@
+<?php
+/**
+ * @file
+ * Theme to help test the Twig engine.
+ */
+
+/**
+ * Implements THEME_preprocess_theme_test_template_test().
+ */
+function test_theme_twig_preprocess_theme_test_template_test(&$variables) {
+  // Build an array of type => value pairs for testTwigVariableDataTypes().
+  $types = array(
+    'null' => NULL,
+  );
+
+  foreach ($types as $type => $value) {
+    // Prefix each variable with "twig_" so that twig doesn't get confused
+    // between a variable and a primitive.
+    $variables['twig_' . $type] = $value;
+  }
+}
diff --git a/core/modules/system/tests/themes/test_theme_twig/theme_test.template_test.html.twig b/core/modules/system/tests/themes/test_theme_twig/theme_test.template_test.html.twig
index 6cda319..d8957ec 100644
--- a/core/modules/system/tests/themes/test_theme_twig/theme_test.template_test.html.twig
+++ b/core/modules/system/tests/themes/test_theme_twig/theme_test.template_test.html.twig
@@ -1,2 +1,4 @@
 {# Output for Theme API test #}
 Success: Template overridden.
+
+<p id="null-test">null: {{ twig_null }}</p>
