diff --git a/.gitignore b/.gitignore
index 812e179..e3ea539 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/gtk+-2.24.28.tar.bz2
+SOURCES/gtk+-2.24.31.tar.xz
diff --git a/.gtk2.metadata b/.gtk2.metadata
index f50327c..4dbc5b9 100644
--- a/.gtk2.metadata
+++ b/.gtk2.metadata
@@ -1 +1 @@
-b29814dba2e23c81b83a09162c49a1b638b268d8 SOURCES/gtk+-2.24.28.tar.bz2
+c3d828135994a52cc9428a60175bd2b294656611 SOURCES/gtk+-2.24.31.tar.xz
diff --git a/SOURCES/0001-Fix-a-wrong-function-call.patch b/SOURCES/0001-Fix-a-wrong-function-call.patch
deleted file mode 100644
index e3cbb0a..0000000
--- a/SOURCES/0001-Fix-a-wrong-function-call.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 7ee8b1fd9af52842e87c26465b9aa8921e62ec90 Mon Sep 17 00:00:00 2001
-From: Matthias Clasen <mclasen@redhat.com>
-Date: Fri, 17 Jul 2015 21:20:10 -0400
-Subject: [PATCH 1/2] Fix a wrong function call
-
-cairo_region_destroy can't handle GdkRegions. We need to call
-gdk_region_destroy. Found by coverity.
----
- gdk/gdkwindow.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
-index a0500ce..eb0a56d 100644
---- a/gdk/gdkwindow.c
-+++ b/gdk/gdkwindow.c
-@@ -8785,7 +8785,7 @@ do_child_shapes (GdkWindow *window,
- 
-   gdk_window_shape_combine_region (window, region, 0, 0);
- 
--  cairo_region_destroy (region);
-+  gdk_region_destroy (region);
- }
- 
- /**
--- 
-2.4.5
-
diff --git a/SOURCES/update-gtk-immodules b/SOURCES/update-gtk-immodules
index f53cbc2..2b9471b 100755
--- a/SOURCES/update-gtk-immodules
+++ b/SOURCES/update-gtk-immodules
@@ -6,44 +6,12 @@ if test $# != 1; then
 fi
  
 umask 022
-# Deriving /etc/gtk-2.0/$host location
-#
-# autoconf changes linux to linux-gnu
-case "$1" in
-  *linux) host="$1-gnu"
-  ;;
-  *) host=$1
-  ;;
-esac
 
-# autoconf uses powerpc not ppc
-host=`echo $host | sed "s/^ppc/powerpc/"`
-# autoconf uses ibm-linux not redhat-linux (s390x)
-host=`echo $host | sed "s/^s390\(x\)*-redhat/s390\1-ibm/"`
-
-# We have had problems in the past with build systems
-# changing host from i386 to i686 and appending/dropping
-# the -gnu suffix, so try to match up the $host we got
-# with whats actually there.
-if [ ! -d /etc/gtk-2.0/$host ]; then
-   case "$host" in
-     i?86*)
-         for d in $(ls -d /etc/gtk-2.0/i?86* 2>/dev/null); do
-           host=$(basename $d)
-           break
-         done
-     ;;
-   esac
-   [ -d /etc/gtk-2.0/$host ] || exit 0
-fi
-
-FILE=/etc/gtk-2.0/$host/gtk.immodules
-
-case "$host" in
-  alpha*|ia64*|powerpc64*|s390x*|x86_64*|aarch64*)
-   /usr/bin/gtk-query-immodules-2.0-64 > $FILE
+case "$1" in
+  alpha*|ia64*|ppc64*|powerpc64*|s390x*|x86_64*|aarch64*)
+   /usr/bin/gtk-query-immodules-2.0-64 --update-cache
    ;;
   *)
-   /usr/bin/gtk-query-immodules-2.0-32 > $FILE
+   /usr/bin/gtk-query-immodules-2.0-32 --update-cache
    ;;
 esac
diff --git a/SOURCES/update-gtk-immodules.1 b/SOURCES/update-gtk-immodules.1
index 19c086c..84f8eb0 100644
--- a/SOURCES/update-gtk-immodules.1
+++ b/SOURCES/update-gtk-immodules.1
@@ -46,7 +46,7 @@ as the host triplet that GTK+ was configured with.
 
 .SH "FILES"
 .PP
-/etc/gtk-2.0/\fIhost\fR/gtk.immodules - the file created by update-gtk-immodules.
+$libdir/gtk-2.0/2.10.0/immodules.cache - the file created by update-gtk-immodules.
 
 .SH "SEE ALSO"
 .BR gtk-query-immodules-2.0 "(1)"
diff --git a/SPECS/gtk2.spec b/SPECS/gtk2.spec
index 73ebae7..306f1eb 100644
--- a/SPECS/gtk2.spec
+++ b/SPECS/gtk2.spec
@@ -8,7 +8,6 @@
 %define atk_version %{atk_base_version}-2
 %define cairo_base_version 1.6.0
 %define cairo_version %{cairo_base_version}-1
-%define libpng_version 2:1.2.2-16
 %define xrandr_version 1.2.99.4-2
 %define gobject_introspection_version 0.9.3
 %define gir_repository_version 0.6.5-5
@@ -17,18 +16,17 @@
 
 Summary: The GIMP ToolKit (GTK+), a library for creating GUIs for X
 Name: gtk2
-Version: 2.24.28
-Release: 8%{?dist}
+Version: 2.24.31
+Release: 1%{?dist}
 License: LGPLv2+
 Group: System Environment/Libraries
 URL: http://www.gtk.org
 #VCS: git:git://git.gnome.org/gtk+#gtk-2-24
-Source: http://download.gnome.org/sources/gtk+/2.24/gtk+-%{version}.tar.bz2
+Source: http://download.gnome.org/sources/gtk+/2.24/gtk+-%{version}.tar.xz
 Source2: update-gtk-immodules
 Source3: im-cedilla.conf
 Source4: update-gtk-immodules.1
 
-# Biarch changes
 Patch1: system-python.patch
 # https://bugzilla.gnome.org/show_bug.cgi?id=583273
 Patch2: icon-padding.patch
@@ -36,33 +34,29 @@ Patch2: icon-padding.patch
 Patch8: tooltip-positioning.patch
 # https://bugzilla.gnome.org/show_bug.cgi?id=611313
 Patch15: window-dragging.patch
-# coverity fix
-Patch20: 0001-Fix-a-wrong-function-call.patch
-
-BuildRequires: atk-devel >= %{atk_version}
-BuildRequires: glib2-devel >= %{glib2_version}
-BuildRequires: cairo-devel
-BuildRequires: gdk-pixbuf2-devel
-BuildRequires: pango-devel >= %{pango_version}
-BuildRequires: libtiff-devel
-BuildRequires: libjpeg-devel
-BuildRequires: jasper-devel
-BuildRequires: libXi-devel
-BuildRequires: libpng-devel >= %{libpng_version}
+
+BuildRequires: pkgconfig(atk) >= %{atk_version}
+BuildRequires: pkgconfig(glib-2.0) >= %{glib2_version}
+BuildRequires: pkgconfig(gobject-introspection-1.0) >= %{gobject_introspection_version}
+BuildRequires: pkgconfig(cairo)
+BuildRequires: pkgconfig(gdk-pixbuf-2.0)
+BuildRequires: pkgconfig(pango) >= %{pango_version}
+BuildRequires: pkgconfig(xi)
+BuildRequires: pkgconfig(xrandr)
+BuildRequires: pkgconfig(xrender)
+BuildRequires: pkgconfig(xcursor)
+BuildRequires: pkgconfig(xfixes)
+BuildRequires: pkgconfig(xinerama)
+BuildRequires: pkgconfig(xcomposite)
+BuildRequires: pkgconfig(xdamage)
 BuildRequires: gettext
 BuildRequires: cups-devel
-BuildRequires: cairo-devel >= %{cairo_version}
-BuildRequires: libXrandr-devel >= %{xrandr_version}
-BuildRequires: libXrender-devel
-BuildRequires: libXcursor-devel
-BuildRequires: libXfixes-devel
-BuildRequires: libXinerama-devel
-BuildRequires: libXcomposite-devel
-BuildRequires: libXdamage-devel
-BuildRequires: gobject-introspection-devel >= %{gobject_introspection_version}
 # Bootstrap requirements
 BuildRequires: gtk-doc
-BuildRequires: automake autoconf libtool pkgconfig
+BuildRequires: automake
+BuildRequires: autoconf
+BuildRequires: libtool
+BuildRequires: pkgconfig
 
 # Conflicts with packages containing theme engines
 # built against the 2.4.0 ABI
@@ -75,12 +69,13 @@ Obsoletes: gail < 2.13.0-1
 
 # required for icon theme apis to work
 Requires: hicolor-icon-theme
+# built as a subpackage of gtk3
+Requires: gtk-update-icon-cache
 
-# We need to prereq these so we can run gtk-query-immodules-2.0
-Requires(post): glib2 >= %{glib2_version}
-Requires(post): atk >= %{atk_version}
-Requires(post): pango >= %{pango_version}
-# and these for gdk-pixbuf-query-loaders
+Requires: glib2 >= %{glib2_version}
+Requires: atk >= %{atk_version}
+Requires: pango >= %{pango_version}
+# We need to prereq these so we can run gdk-pixbuf-query-loaders
 Requires(post): libtiff >= 3.6.1
 Requires: libXrandr >= %{xrandr_version}
 
@@ -121,7 +116,6 @@ Requires: cairo-devel >= %{cairo_version}
 Requires: libX11-devel, libXcursor-devel, libXinerama-devel
 Requires: libXext-devel, libXi-devel, libXrandr-devel
 Requires: libXfixes-devel, libXcomposite-devel
-Requires: libpng-devel
 Requires: pkgconfig
 
 Provides: gail-devel = %{version}-%{release}
@@ -149,10 +143,8 @@ This package contains developer documentation for the GTK+ widget toolkit.
 %patch2 -p1 -b .icon-padding
 %patch8 -p1 -b .tooltip-positioning
 %patch15 -p1 -b .window-dragging
-%patch20 -p1
 
 %build
-
 export CFLAGS='-fno-strict-aliasing %optflags'
 (if ! test -x configure; then NOCONFIGURE=1 ./autogen.sh; CONFIGFLAGS=--enable-gtk-doc; fi;
  %configure $CONFIGFLAGS \
@@ -207,7 +199,6 @@ gzip -c %{SOURCE4} > $RPM_BUILD_ROOT%{_mandir}/man1/update-gtk-immodules.1.gz
 %find_lang gtk20
 %find_lang gtk20-properties
 
-mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/gtk-2.0
 #
 # Make cleaned-up versions of tutorials, examples, and faq for installation
 #
@@ -228,7 +219,7 @@ done
 # for places where we have two copies of the GTK+ package installed.
 # (we might have x86_64 and i686 packages on the same system, for example.)
 case "$host" in
-  alpha*|ia64*|ppc64*|powerpc64*|s390x*|x86_64*|aarch64*)
+  alpha*|ia64*|ppc64*|powerpc64*|s390x*|x86_64*|aarch64*|mips64*)
    mv $RPM_BUILD_ROOT%{_bindir}/gtk-query-immodules-2.0 $RPM_BUILD_ROOT%{_bindir}/gtk-query-immodules-2.0-64
    ;;
   *)
@@ -247,6 +238,8 @@ cp %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/X11/xinit/xinput.d
 rm $RPM_BUILD_ROOT%{_libdir}/*.la
 rm $RPM_BUILD_ROOT%{_libdir}/gtk-2.0/*/*.la
 rm $RPM_BUILD_ROOT%{_libdir}/gtk-2.0/%{bin_version}/*/*.la
+rm $RPM_BUILD_ROOT%{_bindir}/gtk-update-icon-cache
+rm $RPM_BUILD_ROOT%{_mandir}/man1/gtk-update-icon-cache.1*
 
 touch $RPM_BUILD_ROOT%{_libdir}/gtk-2.0/%{bin_version}/immodules.cache
 
@@ -277,10 +270,10 @@ gtk-query-immodules-2.0-%{__isa_bits} --update-cache
 gtk-query-immodules-2.0-%{__isa_bits} --update-cache
 
 %files -f gtk20.lang
-%doc AUTHORS COPYING NEWS README
+%license COPYING
+%doc AUTHORS NEWS README
 %{_bindir}/gtk-query-immodules-2.0*
 %{_bindir}/update-gtk-immodules
-%{_bindir}/gtk-update-icon-cache
 %{_libdir}/libgtk-x11-2.0.so.*
 %{_libdir}/libgdk-x11-2.0.so.*
 %{_libdir}/libgailutil.so.*
@@ -292,6 +285,7 @@ gtk-query-immodules-2.0-%{__isa_bits} --update-cache
 %{_libdir}/gtk-2.0/%{bin_version}/printbackends
 %{_libdir}/gtk-2.0/modules
 %{_libdir}/gtk-2.0/immodules
+%dir %{_datadir}/gtk-2.0
 %{_datadir}/themes/Default
 %{_datadir}/themes/Emacs
 %{_datadir}/themes/Raleigh
@@ -299,7 +293,6 @@ gtk-query-immodules-2.0-%{__isa_bits} --update-cache
 %{_libdir}/girepository-1.0
 %{_mandir}/man1/gtk-query-immodules-2.0*
 %{_mandir}/man1/update-gtk-immodules.1.gz
-%{_mandir}/man1/gtk-update-icon-cache.1.gz
 
 %files immodules
 %{_libdir}/gtk-2.0/%{bin_version}/immodules/im-am-et.so
@@ -327,7 +320,7 @@ gtk-query-immodules-2.0-%{__isa_bits} --update-cache
 %{_bindir}/gtk-builder-convert
 %{_libdir}/pkgconfig/*
 %{_bindir}/gtk-demo
-%{_datadir}/gtk-2.0
+%{_datadir}/gtk-2.0/demo
 %{_datadir}/gir-1.0
 %{_mandir}/man1/gtk-builder-convert.1.gz
 
@@ -338,6 +331,10 @@ gtk-query-immodules-2.0-%{__isa_bits} --update-cache
 %doc tmpdocs/examples
 
 %changelog
+* Sun Sep 11 2016 Kalev Lember <klember@redhat.com> - 2.24.31-1
+- Update to 2.24.31
+- Resolves: #1386979
+
 * Fri Jul 17 2015 Matthias Clasen <mclasen@redhat.com> - 2.24.28-8
 - Fix a coverty spotted bug
 Related: #1221171