diff --git a/docs/reference/glib/gvariant-format-strings.md b/docs/reference/glib/gvariant-format-strings.md
index 668282cb6..264b95c4a 100644
--- a/docs/reference/glib/gvariant-format-strings.md
+++ b/docs/reference/glib/gvariant-format-strings.md
@@ -73,9 +73,10 @@ The equivalent C types are as follows:
| `u` | `guint32` |
| `x` | `gint64` |
| `t` | `guint64` |
-| `h` | `gint32` |
+| `h` | `gint32` (handle) |
| `d` | `gdouble` |
+
Note that in C, small integer types in variable argument lists are promoted
up to `int` or `unsigned int` as appropriate, and read back accordingly. `int`
is 32 bits on every platform on which GLib is currently supported. This
diff --git a/docs/reference/glib/gvariant-specification-1.0.rst b/docs/reference/glib/gvariant-specification-1.0.rst
index 1460d4610..82e0c7ba3 100644
--- a/docs/reference/glib/gvariant-specification-1.0.rst
+++ b/docs/reference/glib/gvariant-specification-1.0.rst
@@ -22,6 +22,9 @@ and diffs, see the `commit log
@@ -2699,7 +2699,7 @@ g_variant_new_parsed (const gchar *format,
*
* Note that the arguments must be of the correct width for their types
* specified in @format_string. This can be achieved by casting them. See
- * the [GVariant varargs documentation][gvariant-varargs].
+ * the [GVariant varargs documentation](gvariant-format-strings.html#varargs).
*
* This function might be used as follows:
*
diff --git a/glib/gvariant.c b/glib/gvariant.c
index ea99e1f22..d71b061d5 100644
--- a/glib/gvariant.c
+++ b/glib/gvariant.c
@@ -1112,7 +1112,7 @@ g_variant_lookup_value (GVariant *dictionary,
*
* @element_size must be the size of a single element in the array,
* as given by the section on
- * [serialized data memory][gvariant-serialized-data-memory].
+ * [serialized data memory](struct.Variant.html#serialized-data-memory).
*
* In particular, arrays of these fixed-sized types can be interpreted
* as an array of the given C type, with @element_size set to the size
@@ -1258,7 +1258,7 @@ g_variant_new_fixed_array (const GVariantType *element_type,
*
* @string must be valid UTF-8, and must not be %NULL. To encode
* potentially-%NULL strings, use g_variant_new() with `ms` as the
- * [format string][gvariant-format-strings-maybe-types].
+ * [format string](gvariant-format-strings.html#maybe-types).
*
* Returns: (transfer none): a floating reference to a new string #GVariant instance
*
@@ -2641,7 +2641,7 @@ g_variant_print_string (GVariant *value,
*
* Pretty-prints @value in the format understood by g_variant_parse().
*
- * The format is described [here][gvariant-text].
+ * The format is described [here](gvariant-text-format.html).
*
* If @type_annotate is %TRUE, then type information is included in
* the output.
@@ -4361,7 +4361,7 @@ g_variant_dict_unref (GVariantDict *dict)
* not be accessed and the effect is otherwise equivalent to if the
* character at @limit were nul.
*
- * See the section on [GVariant format strings][gvariant-format-strings].
+ * See the section on [GVariant format strings](gvariant-format-strings.html).
*
* Returns: %TRUE if there was a valid format string
*
@@ -5376,7 +5376,7 @@ g_variant_valist_get (const gchar **str,
*
* The type of the created instance and the arguments that are expected
* by this function are determined by @format_string. See the section on
- * [GVariant format strings][gvariant-format-strings]. Please note that
+ * [GVariant format strings](gvariant-format-strings.html). Please note that
* the syntax of the format string is very likely to be extended in the
* future.
*
@@ -5386,7 +5386,7 @@ g_variant_valist_get (const gchar **str,
*
* Note that the arguments must be of the correct width for their types
* specified in @format_string. This can be achieved by casting them. See
- * the [GVariant varargs documentation][gvariant-varargs].
+ * the [GVariant varargs documentation](gvariant-format-strings.html#varargs).
*
* |[
* MyFlags some_flags = FLAG_ONE | FLAG_TWO;
@@ -5447,7 +5447,7 @@ g_variant_new (const gchar *format_string,
*
* Note that the arguments in @app must be of the correct width for their
* types specified in @format_string when collected into the #va_list.
- * See the [GVariant varargs documentation][gvariant-varargs].
+ * See the [GVariant varargs documentation](gvariant-format-strings.html#varargs).
*
* These two generalisations allow mixing of multiple calls to
* g_variant_new_va() and g_variant_get_va() within a single actual
@@ -5503,7 +5503,7 @@ g_variant_new_va (const gchar *format_string,
* determined by @format_string. @format_string also restricts the
* permissible types of @value. It is an error to give a value with
* an incompatible type. See the section on
- * [GVariant format strings][gvariant-format-strings].
+ * [GVariant format strings](gvariant-format-strings.html).
* Please note that the syntax of the format string is very likely to be
* extended in the future.
*
@@ -5603,7 +5603,7 @@ g_variant_get_va (GVariant *value,
*
* Note that the arguments must be of the correct width for their types
* specified in @format_string. This can be achieved by casting them. See
- * the [GVariant varargs documentation][gvariant-varargs].
+ * the [GVariant varargs documentation](gvariant-format-strings.html#varargs).
*
* This function might be used as follows:
*