diff --git a/src/post_modules/GTK2/source/global.pre b/src/post_modules/GTK2/source/global.pre
index a290cec814e03773cb23c66918b1566fe642eccc..d22474a9987ece18da333cc392e80f6d19af447e 100644
--- a/src/post_modules/GTK2/source/global.pre
+++ b/src/post_modules/GTK2/source/global.pre
@@ -264,7 +264,9 @@ array(string) setup_gtk(array(string)|void argv, int|void do_not_parse_rc)
   pgtk2_is_setup=1;
   gtk_set_locale();
   gtk_init(&argc,&data);
+#if GLIB_MAJOR_VERISON > 2 || GLIB_MINOR_VERSION < 36
   g_type_init();
+#endif
 
   backend_cb=(void *)add_backend_callback(backend_callback,0,0);
   pgtk2_pop_n_elems(args);
diff --git a/src/post_modules/GTK2/source/support.c b/src/post_modules/GTK2/source/support.c
index c9df2f631ca7150e5be247a7399bd441b264260b..35e6c16edf93d626793eb5cb94763141294f3ac2 100644
--- a/src/post_modules/GTK2/source/support.c
+++ b/src/post_modules/GTK2/source/support.c
@@ -543,7 +543,7 @@ static int pgtk2_push_int_param(const GValue *a) {
       retval=(LONGEST)g_value_get_long(a); 
       break;
     case G_TYPE_CHAR:
-      retval=(LONGEST)g_value_get_char(a); 
+      retval=(LONGEST)g_value_get_schar(a); 
       break;
     default:
       retval=(LONGEST)g_value_get_uint(a); 
@@ -1201,7 +1201,7 @@ void pgtk2_set_gvalue(GValue *gv, GType gt, struct svalue *sv) {
       g_value_set_uint(gv,(guint)PGTK_GETINT(sv));
       break;
     case G_TYPE_CHAR:
-      g_value_set_char(gv,(gchar)PGTK_GETINT(sv));
+      g_value_set_schar(gv,(gchar)PGTK_GETINT(sv));
       break;
     case G_TYPE_UCHAR:
       g_value_set_uchar(gv,(guchar)PGTK_GETINT(sv));