diff --git a/core/modules/node/content_types.inc b/core/modules/node/content_types.inc
index 538b19f..067e118 100644
--- a/core/modules/node/content_types.inc
+++ b/core/modules/node/content_types.inc
@@ -127,8 +127,10 @@ function node_type_form($form, &$form_state, $type = NULL) {
 
   $form['type'] = array(
     '#type' => 'machine_name',
+    '#field_prefix' => 'custom_',
     '#default_value' => $type->type,
-    '#maxlength' => 32,
+    // 32 characters minus the 'custom_' prefix.
+    '#maxlength' => 25,
     '#disabled' => $type->locked,
     '#machine_name' => array(
       'exists' => 'node_type_load',
@@ -306,7 +308,8 @@ function _node_characters($length) {
  */
 function node_type_form_validate($form, &$form_state) {
   $type = new stdClass();
-  $type->type = trim($form_state['values']['type']);
+  $type->type = 'custom_' . trim($form_state['values']['type']);
+  form_set_value($form['type'], $type->type, $form_state);
   $type->name = trim($form_state['values']['name']);
 
   // Work out what the type was before the user submitted this form
