Index: django/newforms/fields.py
===================================================================
--- django/newforms/fields.py	(revision 6674)
+++ django/newforms/fields.py	(working copy)
@@ -538,9 +538,9 @@
     def clean(self, value):
         "Returns a Python boolean object."
         super(BooleanField, self).clean(value)
-        # Explicitly check for the string '0', which is what as hidden field
+        # Explicitly check for the string 'False', which is what as hidden field
         # will submit for False.
-        if value == '0':
+        if value == 'False':
             return False
         return bool(value)
 
Index: tests/regressiontests/forms/fields.py
===================================================================
--- tests/regressiontests/forms/fields.py	(revision 6674)
+++ tests/regressiontests/forms/fields.py	(working copy)
@@ -914,6 +914,11 @@
 >>> f.clean('Django rocks')
 True
 
+A form's BooleanField with a hidden widget will output the string 'False', so
+that should clean to the boolean value False:
+>>> f.clean('False')
+False
+
 >>> f = BooleanField(required=False)
 >>> f.clean('')
 False
@@ -930,6 +935,11 @@
 >>> f.clean('Django rocks')
 True
 
+A form's BooleanField with a hidden widget will output the string 'False', so
+that should clean to the boolean value False:
+>>> f.clean('False')
+False
+
 # ChoiceField #################################################################
 
 >>> f = ChoiceField(choices=[('1', '1'), ('2', '2')])
Index: tests/regressiontests/forms/widgets.py
===================================================================
--- tests/regressiontests/forms/widgets.py	(revision 6674)
+++ tests/regressiontests/forms/widgets.py	(working copy)
@@ -128,6 +128,12 @@
 >>> w.render('email', '', attrs={'class': 'special'})
 u'<input type="hidden" class="special" name="email" />'
 
+Still renders the boolean value False as the string 'False', it's the job of the
+field to clean that back to a boolean False if required.
+>>> w = HiddenInput()
+>>> w.render('get_spam', False)
+u'<input type="hidden" name="get_spam" value="False" />'
+
 # MultipleHiddenInput Widget ##################################################
 
 >>> w = MultipleHiddenInput()
