diff --git a/modules/comment/comment.module b/modules/comment/comment.module
index 3c94200..9571e5e 100644
--- a/modules/comment/comment.module
+++ b/modules/comment/comment.module
@@ -1160,10 +1160,13 @@ function comment_form_node_type_form_alter(&$form, $form_state) {
       '#description' => t('Show comment replies in a threaded list.'),
     );
     $form['comment']['comment_default_per_page'] = array(
-      '#type' => 'select',
+      '#type' => 'textfield',
       '#title' => t('Comments per page'),
       '#default_value' => variable_get('comment_default_per_page_' . $form['#node_type']->type, 50),
-      '#options' => _comment_per_page(),
+      '#required' => TRUE,
+      '#min' => 10,
+      '#max' => 1000,
+      '#step' => 10,
     );
     $form['comment']['comment_anonymous'] = array(
       '#type' => 'select',
@@ -2422,14 +2425,6 @@ function _comment_get_modes() {
 }
 
 /**
- * Return an array of "comments per page" settings from which the user
- * can choose.
- */
-function _comment_per_page() {
-  return drupal_map_assoc(array(10, 30, 50, 70, 90, 150, 200, 250, 300));
-}
-
-/**
  * Updates the comment statistics for a given node. This should be called any
  * time a comment is added, deleted, or updated.
  *
