diff --git a/components/grid.inc b/components/grid.inc
index 52cbb91..de39210 100644
--- a/components/grid.inc
+++ b/components/grid.inc
@@ -167,6 +167,8 @@ function _webform_render_grid($component, $value = NULL, $filter = TRUE) {
         '#title' => $question,
         '#required' => $component['mandatory'],
         '#options' => $options,
+        // No default value so that we don't bias any of the options.
+        '#default_value' => FALSE,
         '#type' => 'radios',
         '#process' => array('form_process_radios', 'webform_expand_select_ids'),
 
@@ -179,7 +181,11 @@ function _webform_render_grid($component, $value = NULL, $filter = TRUE) {
 
   if (isset($value)) {
     foreach (element_children($element) as $key) {
-      $element[$key]['#default_value'] = isset($value[$key]) ? $value[$key] : NULL;
+      // If a question is submitted without any of its options selected, we
+      // store that in the database as an empty string, but we need to convert
+      // that to a default value of FALSE when the form is displayed to prevent
+      // any of the options from being selected; see theme_radio().
+      $element[$key]['#default_value'] = isset($value[$key]) && $value[$key] !== '' ? $value[$key] : FALSE;
     }
   }
 
diff --git a/webform.module b/webform.module
index 612adb0..86e407b 100644
--- a/webform.module
+++ b/webform.module
@@ -1987,8 +1987,9 @@ function _webform_client_form_validate($elements, &$form_state, $first_run = TRU
       // Make sure a value is passed when the field is required.
       // A simple call to empty() will not cut it here as some fields, like
       // checkboxes, can return a valid value of '0'. Instead, check the
-      // length if it's a string, and the item count if it's an array.
-      if ($elements['#required'] && (!count($elements['#value']) || (is_string($elements['#value']) && strlen(trim($elements['#value'])) == 0))) {
+      // length if it's a string, and the item count if it's an array. For
+      // radios, FALSE means that no value was submitted, so check that too.
+      if ($elements['#required'] && (!count($elements['#value']) || (is_string($elements['#value']) && strlen(trim($elements['#value'])) == 0) || ($elements['#type'] == 'radios' && $elements['#value'] === FALSE))) {
         form_error($elements, t('!name field is required.', array('!name' => $elements['#title'])));
       }
 
