diff --git a/goffice/graph/gog-axis.c b/goffice/graph/gog-axis.c
index 4762c67..b827c1b 100644
--- a/goffice/graph/gog-axis.c
+++ b/goffice/graph/gog-axis.c
@@ -353,14 +353,19 @@ map_discrete_calc_ticks (GogAxis *axis)
 		ticks[j].type = GOG_AXIS_TICK_NONE;
 		if (axis->labels != NULL) {
 			if (index < (int) go_data_get_vector_size (axis->labels) && index >= 0) {
-				char *label = go_data_get_vector_string (axis->labels, index);
-				ticks[j].label = g_markup_escape_text (label, -1);
-				g_free (label);
+				double val = go_data_get_vector_value (axis->labels, index);
+				if (go_finite (val))
+					ticks[j].label = axis_format_value (axis, index + 1);
+				else {
+					char *label = go_data_get_vector_string (axis->labels, index);
+					ticks[j].label = g_markup_escape_text (label, -1);
+					g_free (label);
+				}
 			} else
 				ticks[j].label = NULL;
 		}
 		else
-			ticks[j].label = g_strdup_printf ("%d", index + 1);
+			ticks[j].label = axis_format_value (axis, index + 1);
 	}
 
 	gog_axis_set_ticks (axis, tick_nbr + label_nbr, ticks);
@@ -2507,7 +2512,7 @@ gog_axis_populate_editor (GogObject *gobj,
 	    (GOG_OBJECT_CLASS(parent_klass)->populate_editor) (gobj, editor, dalloc, cc);
 
 	    /* Format page */
-	    if (!axis->is_discrete) {
+	    {
 		    GOFormat *fmt = gog_axis_get_effective_format (axis);
 		    w = go_format_sel_new_full (TRUE);
 		    state->format_selector = w;
