--- a/Cargo.toml
+++ b/Cargo.toml
@@ -152,7 +152,7 @@
 version = "1.8"
 
 [dependencies.resvg]
-version = "0.36"
+version = "0.42"
 
 [dependencies.rustc-hash]
 version = "1"
--- a/src/image/svg.rs
+++ b/src/image/svg.rs
@@ -12,20 +12,12 @@
         usvg::{
             self,
             fontdb,
-            TreeParsing,
-            TreeTextToPath,
         },
         tiny_skia,
     },
     termimad::coolor,
 };
 
-static FONT_DB: Lazy<fontdb::Database> = Lazy::new(||{
-    let mut fontdb = fontdb::Database::new();
-    fontdb.load_system_fonts();
-    fontdb
-});
-
 fn compute_zoom(w:f32, h:f32, max_width:u32, max_height:u32) -> Result<f32, SvgError> {
     let mw: f32 = max_width.max(2) as f32;
     let mh: f32 = max_height.max(2) as f32;
@@ -41,26 +33,25 @@
 
 pub fn load<P: Into<PathBuf>>(
     path: P,
-) -> Result<resvg::Tree, SvgError> {
+) -> Result<usvg::Tree, SvgError> {
     let path: PathBuf = path.into();
-    let opt = usvg::Options {
+    let mut opt = usvg::Options {
         resources_dir: Some(path.clone()),
         ..Default::default()
     };
+    opt.fontdb_mut().load_system_fonts();
     let svg_data = std::fs::read(path)?;
-    let mut tree = usvg::Tree::from_data(&svg_data, &opt)?;
-    tree.convert_text(&FONT_DB);
-    let tree = resvg::Tree::from_usvg(&tree);
+    let tree = usvg::Tree::from_data(&svg_data, &opt)?;
     Ok(tree)
 }
 pub fn render_tree(
-    tree: &resvg::Tree,
+    tree: &usvg::Tree,
     max_width: u32,
     max_height: u32,
     bg_color: Option<coolor::Color>,
 ) -> Result<DynamicImage, SvgError> {
-    let t_width = tree.size.width();
-    let t_height = tree.size.height();
+    let t_width = tree.size().width();
+    let t_height = tree.size().height();
     debug!("SVG natural size: {t_width} x {t_height}");
     let zoom = compute_zoom(t_width, t_height, max_width, max_height)?;
     debug!("svg rendering zoom: {zoom}");
@@ -79,7 +70,8 @@
         let bg_color = tiny_skia::Color::from_rgba8(rgb.r, rgb.g, rgb.b, 255);
         pixmap.fill(bg_color);
     }
-    tree.render(
+    resvg::render(
+        tree,
         tiny_skia::Transform::from_scale(zoom, zoom),
         &mut pixmap.as_mut(),
     );
--- a/src/image/source_image.rs
+++ b/src/image/source_image.rs
@@ -27,7 +27,7 @@
 
 pub enum SourceImage {
     Bitmap(DynamicImage),
-    Svg(resvg::Tree),
+    Svg(resvg::usvg::Tree),
 }
 
 impl SourceImage {
@@ -44,8 +44,8 @@
         match self {
             Self::Bitmap(img) => img.dimensions(),
             Self::Svg(tree) => (
-                f32_to_u32(tree.size.width()),
-                f32_to_u32(tree.size.height())
+                f32_to_u32(tree.size().width()),
+                f32_to_u32(tree.size().height())
             )
         }
     }
