diff --git a/bundles/org.eclipse.swt.svg/.classpath b/bundles/org.eclipse.swt.svg/.classpath
new file mode 100644
index 00000000000..d16b87e8ee2
--- /dev/null
+++ b/bundles/org.eclipse.swt.svg/.classpath
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/bundles/org.eclipse.swt.svg/.project b/bundles/org.eclipse.swt.svg/.project
new file mode 100644
index 00000000000..587ce542c7c
--- /dev/null
+++ b/bundles/org.eclipse.swt.svg/.project
@@ -0,0 +1,28 @@
+
+
+ org.eclipse.swt.svg
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+
+ org.eclipse.pde.PluginNature
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/bundles/org.eclipse.swt.svg/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.swt.svg/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/bundles/org.eclipse.swt.svg/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/=UTF-8
diff --git a/bundles/org.eclipse.swt.svg/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.swt.svg/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..62ef3488cc0
--- /dev/null
+++ b/bundles/org.eclipse.swt.svg/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,9 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
+org.eclipse.jdt.core.compiler.compliance=17
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=17
diff --git a/bundles/org.eclipse.swt.svg/META-INF/MANIFEST.MF b/bundles/org.eclipse.swt.svg/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..82af1dad478
--- /dev/null
+++ b/bundles/org.eclipse.swt.svg/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: SvgPlugin
+Bundle-SymbolicName: org.eclipse.swt.svg
+Bundle-Version: 1.0.0.qualifier
+Automatic-Module-Name: org.eclipse.swt.svgPlugin
+Bundle-RequiredExecutionEnvironment: JavaSE-17
+Export-Package: org.eclipse.swt.svg
+Import-Package: org.eclipse.swt.graphics
+Bundle-ClassPath: ., libs/jsvg-1.6.1.jar
diff --git a/bundles/org.eclipse.swt.svg/build.properties b/bundles/org.eclipse.swt.svg/build.properties
new file mode 100644
index 00000000000..3c7f762fff8
--- /dev/null
+++ b/bundles/org.eclipse.swt.svg/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ libs/jsvg-1.6.1.jar
diff --git a/bundles/org.eclipse.swt.svg/libs/jsvg-1.6.1.jar b/bundles/org.eclipse.swt.svg/libs/jsvg-1.6.1.jar
new file mode 100644
index 00000000000..3095291a853
Binary files /dev/null and b/bundles/org.eclipse.swt.svg/libs/jsvg-1.6.1.jar differ
diff --git a/bundles/org.eclipse.swt.svg/src/org/eclipse/swt/svg/SVGRasterizer.java b/bundles/org.eclipse.swt.svg/src/org/eclipse/swt/svg/SVGRasterizer.java
new file mode 100644
index 00000000000..59498f8b3e7
--- /dev/null
+++ b/bundles/org.eclipse.swt.svg/src/org/eclipse/swt/svg/SVGRasterizer.java
@@ -0,0 +1,74 @@
+package org.eclipse.swt.svg;
+
+import static java.awt.RenderingHints.*;
+
+import java.awt.*;
+import java.awt.image.*;
+import java.io.*;
+import java.nio.charset.*;
+import java.util.*;
+import org.eclipse.swt.graphics.ISVGRasterizer;
+import org.eclipse.swt.graphics.SVGRasterizerRegistry;
+
+import com.github.weisj.jsvg.*;
+import com.github.weisj.jsvg.geometry.size.*;
+import com.github.weisj.jsvg.parser.*;
+
+/**
+ * @since 3.128
+ */
+public class SVGRasterizer implements ISVGRasterizer {
+
+ public static void register() {
+ SVGRasterizerRegistry.register(new SVGRasterizer());
+ }
+
+ private final static Map