diff --git a/components/number.inc b/components/number.inc
index 47b73e4d14..b58055fd16 100644
--- a/components/number.inc
+++ b/components/number.inc
@@ -656,8 +656,11 @@ function _webform_validate_number($element, &$form_state) {
       }

       // Integer test.
-      if ($element['#integer'] && filter_var($numeric_value, FILTER_VALIDATE_INT) === FALSE) {
-        form_error($element, t('!name field value of @value must be an integer.', array('!name' => $element['#title'], '@value' => $value)));
+      if ($element['#integer']) {
+        $val = (float) $numeric_value;
+        if (!(is_int($val) || is_float($val))) {
+          form_error($element, t('!name field value of @value must be an integer.', array('!name' => $element['#title'], '@value' => $value)));
+        }
       }

       // Step test.
