diff --git a/gnu/local.mk b/gnu/local.mk
index c072d5af85..94b4620c02 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1294,7 +1294,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/gcolor3-update-libportal-usage.patch	\
   %D%/packages/patches/gd-fix-tests-on-i686.patch		\
   %D%/packages/patches/gd-brect-bounds.patch			\
-  %D%/packages/patches/gd-Revert-fix-303-gdlib.pc.patch		\
   %D%/packages/patches/gdm-default-session.patch		\
   %D%/packages/patches/gdm-elogind-support.patch		\
   %D%/packages/patches/gdm-remove-hardcoded-xwayland-path.patch	\
diff --git a/gnu/packages/gd.scm b/gnu/packages/gd.scm
index 149b82468c..21ad1579ec 100644
--- a/gnu/packages/gd.scm
+++ b/gnu/packages/gd.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2017, 2021 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -43,38 +44,36 @@ (define-public gd
     ;; Note: With libgd.org now pointing to github.com, genuine old
     ;; tarballs are no longer available.  Notably, versions 2.0.x are
     ;; missing.
-    (version "2.3.2")
+    (version "2.3.3")
     (source (origin
-             (method url-fetch)
-             (uri (string-append
-                   "https://github.com/libgd/libgd/releases/download/gd-"
-                   version "/libgd-" version ".tar.xz"))
-             (sha256
-              (base32
-               "1yypywkh8vphcy4qqpf51kxpb0a3r7rjqk3fc61rpn70hiq092j7"))
-             (patches
-              (search-patches "gd-fix-tests-on-i686.patch"
-                              "gd-brect-bounds.patch"
-                              ;; Drop when
-                              ;; https://github.com/libgd/libgd/issues/691
-                              ;; is solved.
-                              "gd-Revert-fix-303-gdlib.pc.patch"))))
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/libgd/libgd/releases/download/gd-"
+                    version "/libgd-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0qas3q9xz3wgw06dm2fj0i189rain6n60z1vyq50d5h7wbn25s1z"))
+              (patches
+               (search-patches "gd-fix-tests-on-i686.patch"
+                               "gd-brect-bounds.patch"))))
     (build-system gnu-build-system)
     (arguments
-      ;; As recommended by github.com/libgd/libgd/issues/278 to fix rounding
-      ;; issues on aarch64 and other architectures.
-     `(#:make-flags '("CFLAGS=-ffp-contract=off")
-       #:configure-flags '("--disable-static")
-       #:phases
-       (modify-phases %standard-phases
-         ;; This test is known to fail on most architectures:
-         ;; https://github.com/libgd/libgd/issues/359
-         ;; TODO Replace this substitution with an upstream bug fix.
-         (add-after 'unpack 'disable-failing-test
-           (lambda _
-             (substitute* "tests/gdimagegrayscale/basic.c"
-               (("return gdNumFailures\\(\\)")
-                 "return 0")))))))
+     ;; As recommended by github.com/libgd/libgd/issues/278 to fix rounding
+     ;; issues on aarch64 and other architectures.
+     (list #:make-flags #~(list "CFLAGS=-ffp-contract=off")
+           #:configure-flags #~(list "--disable-static")
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'install 'remove-libtool-archives
+                 ;; Libtool archives lists the whole transitive dependencies,
+                 ;; which is unnecessary unless producing static archives and
+                 ;; leads to overlinking, e.g. causing the configure script of
+                 ;; texlive-bin to fail due to looking for a transitive jpeg
+                 ;; library.
+                 (lambda _
+                   (for-each delete-file
+                             (find-files (string-append #$output "/lib")
+                                         "\\.la$")))))))
     (native-inputs
      (list pkg-config))
     (inputs
diff --git a/gnu/packages/patches/gd-Revert-fix-303-gdlib.pc.patch b/gnu/packages/patches/gd-Revert-fix-303-gdlib.pc.patch
deleted file mode 100644
index 6329b129d3..0000000000
--- a/gnu/packages/patches/gd-Revert-fix-303-gdlib.pc.patch
+++ /dev/null
@@ -1,179 +0,0 @@
-From 9b31dfda73ee2d1b56b3f0dcfd3246c2faa592fe Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?L=C3=A9o=20Le=20Bouter?= <lle-bout@zaclys.net>
-Date: Sun, 28 Mar 2021 19:47:25 +0200
-Subject: [PATCH] Revert "fix #303: gdlib.pc: use Requires instead of Libs
- (#537)"
-
-This reverts commit 28ecfe77c817aff8ce56422d3e4e8533a281bc76.
----
- CMakeLists.txt        | 12 ------------
- config/gdlib.pc.cmake |  4 +---
- config/gdlib.pc.in    |  4 +---
- configure.ac          | 11 +----------
- src/CMakeLists.txt    |  6 ------
- 5 files changed, 3 insertions(+), 34 deletions(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 57cd95d..6bd0c73 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -53,8 +53,6 @@ SET (CMAKE_ARCHIVE_OUTPUT_DIRECTORY
-   "Single Directory for all static libraries."
-   )
- 
--SET(PKG_REQUIRES_PRIVATES "")
--
- if (USE_EXT_GD)
- 	message("Using GD at: ${USE_EXT_GD}")
- 	INCLUDE_DIRECTORIES(BEFORE ${GD_INCLUDE_DIR})
-@@ -170,13 +168,11 @@ else (USE_EXT_GD)
- 		INCLUDE_DIRECTORIES(${FREETYPE_INCLUDE_DIRS})
- 		SET(HAVE_FT2BUILD_H 1)
- 		SET(HAVE_LIBFREETYPE 1)
--		LIST(APPEND PKG_REQUIRES_PRIVATES freetype2)
- 	ENDIF(FREETYPE_FOUND)
- 
- 	IF(ZLIB_FOUND)
- 		INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
- 		SET(HAVE_LIBZ 1)
--		LIST(APPEND PKG_REQUIRES_PRIVATES zlib)
- 	ENDIF(ZLIB_FOUND)
- 
- 	IF(WEBP_FOUND)
-@@ -192,7 +188,6 @@ else (USE_EXT_GD)
- 	IF(PNG_FOUND)
- 		INCLUDE_DIRECTORIES(${PNG_INCLUDE_DIR})
- 		SET(HAVE_LIBPNG 1)
--		LIST(APPEND PKG_REQUIRES_PRIVATES libpng)
- 	ENDIF(PNG_FOUND)
- 
- 	IF(ICONV_FOUND)
-@@ -209,25 +204,21 @@ else (USE_EXT_GD)
- 	IF(XPM_FOUND)
- 		INCLUDE_DIRECTORIES(${XPM_INCLUDE_DIR})
- 		SET(HAVE_LIBXPM 1)
--		LIST(APPEND PKG_REQUIRES_PRIVATES xpm)
- 	ENDIF(XPM_FOUND)
- 
- 	IF(JPEG_FOUND)
- 		INCLUDE_DIRECTORIES(${JPEG_INCLUDE_DIR})
- 		SET(HAVE_LIBJPEG 1)
--		LIST(APPEND PKG_REQUIRES_PRIVATES libjpeg)
- 	ENDIF(JPEG_FOUND)
- 
- 	IF(TIFF_FOUND)
- 		INCLUDE_DIRECTORIES(${TIFF_INCLUDE_DIR})
- 		SET(HAVE_LIBTIFF 1)
--		LIST(APPEND PKG_REQUIRES_PRIVATES libtiff-4)
- 	ENDIF(TIFF_FOUND)
- 
- 	IF(FONTCONFIG_FOUND)
- 		INCLUDE_DIRECTORIES(${FONTCONFIG_INCLUDE_DIR})
- 		SET(HAVE_LIBFONTCONFIG 1)
--		LIST(APPEND PKG_REQUIRES_PRIVATES fontconfig)
- 	ELSE (FONTCONFIG_FOUND)
- 		SET(FONTCONFIG_LIBRARY "")
- 		SET(FONTCONFIG_INCLUDE_DIR "")
-@@ -236,11 +227,8 @@ else (USE_EXT_GD)
- 
- 	IF(RAQM_FOUND)
- 		INCLUDE_DIRECTORIES(${RAQM_INCLUDE_DIR})
--		SET(HAVE_RAQM 1)
--		LIST(APPEND PKG_REQUIRES_PRIVAES raqm)
- 	ENDIF(RAQM_FOUND)
- 
--	string(REPLACE ";" ", " PKG_REQUIRES_PRIVATES "${PKG_REQUIRES_PRIVATES}")
- 	SET(HAVE_CONFIG_H 1)
- 
- 	ADD_DEFINITIONS(-DHAVE_CONFIG_H)
-diff --git a/config/gdlib.pc.cmake b/config/gdlib.pc.cmake
-index 5fc8af4..d1a0dda 100644
---- a/config/gdlib.pc.cmake
-+++ b/config/gdlib.pc.cmake
-@@ -6,8 +6,6 @@ includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
- Name: gd
- Description: GD graphics library
- Version: @GDLIB_VERSION@
--Requires:
--Requires.private: @PKG_REQUIRES_PRIVATES@
- Cflags: -I${includedir}
--Libs.private: @LIBS_PRIVATES@
-+Libs.private: @LIBGD_DEP_LIBS@
- Libs: -L${libdir} -lgd
-diff --git a/config/gdlib.pc.in b/config/gdlib.pc.in
-index d6bc375..b980a60 100644
---- a/config/gdlib.pc.in
-+++ b/config/gdlib.pc.in
-@@ -6,8 +6,6 @@ includedir=@includedir@
- Name: gd
- Description: GD graphics library
- Version: @VERSION@
--Requires:
--Requires.private: @PKG_REQUIRES_PRIVATES@
- Cflags: -I${includedir}
--Libs.private: @LIBS_PRIVATES@ @LIBICONV@
-+Libs.private: @LIBS@ @LIBICONV@
- Libs: -L${libdir} -lgd
-diff --git a/configure.ac b/configure.ac
-index 535db68..329c99c 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -33,9 +33,6 @@ AC_SUBST(GDLIB_LT_CURRENT)
- AC_SUBST(GDLIB_LT_REVISION)
- AC_SUBST(GDLIB_LT_AGE)
- 
--AC_SUBST(LIBS_PRIVATES)
--AC_SUBST(PKG_REQUIRES_PRIVATES)
--
- AM_INIT_AUTOMAKE([1.11 foreign dist-xz -Wall -Werror subdir-objects])
- AC_CONFIG_HEADERS([src/config.h:src/config.hin])
- 
-@@ -133,7 +130,6 @@ m4_define([GD_LIB_CHECK], [dnl
-   AC_MSG_RESULT([$gd_with_lib])
- 
-   gd_found_lib=no
--  gd_require_pkg_name=""
-   if test "$gd_with_lib" != "no"; then
-     save_CPPFLAGS=$CPPFLAGS
-     save_LDFLAGS=$LDFLAGS
-@@ -165,11 +161,6 @@ m4_define([GD_LIB_CHECK], [dnl
-       $1][_CFLAGS="$gd_lib_cflags $][$1][_CFLAGS"
-       AS_VAR_APPEND([LIBS], [" $][$1][_LIBS"])
-       AS_VAR_APPEND([CPPFLAGS], [" $][$1][_CFLAGS"])
--      if test -z "$gd_require_pkg_name"; then
--        AS_VAR_APPEND([LIBS_PRIVATES], [" $][$1][_LIBS"])
--      else
--        AS_VAR_APPEND([PKG_REQUIRES_PRIVATES], ["  $gd_require_pkg_name"])
--      fi
-     elif test "$gd_with_lib" = "yes"; then
-       AC_MSG_ERROR([$3 requested but not found])
-     else
-@@ -189,7 +180,7 @@ dnl $4 - pkg-config module to look for
- dnl $5 - fallback test for the feature
- m4_define([GD_LIB_PKG_CHECK], [dnl
-   GD_LIB_CHECK([$1], [$2], [$3], [dnl
--    PKG_CHECK_MODULES([$1], [$4], [gd_found_lib=yes gd_require_pkg_name="$4"], [$5])
-+    PKG_CHECK_MODULES([$1], [$4], [gd_found_lib=yes], [$5])
-   ])
- ])
- 
-diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
-index 509c422..49adbd6 100644
---- a/src/CMakeLists.txt
-+++ b/src/CMakeLists.txt
-@@ -142,12 +142,6 @@ if (BUILD_STATIC_LIBS)
- 	target_link_libraries(${GD_LIB_STATIC} ${LIBGD_DEP_LIBS})
- endif()
- 
--SET(LIBS_PRIVATES
--	${ICONV_LIBRARIES}
--	${LIQ_LIBRARIES}
--	${WEBP_LIBRARIES}
--)
--
- set(GD_PROGRAMS gdcmpgif)
- 
- if (PNG_FOUND)
--- 
-2.31.1
-
