Update plotters-backend to 0.3.7

Test: m
Change-Id: I5a62d8e79e77b0d562deac6b00e6e6ef97aeff50
diff --git a/crates/plotters-backend/.android-checksum.json b/crates/plotters-backend/.android-checksum.json
new file mode 100644
index 0000000..1d77e47
--- /dev/null
+++ b/crates/plotters-backend/.android-checksum.json
@@ -0,0 +1 @@
+{"package":null,"files":{"MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","src/rasterizer/rect.rs":"557d17069969e025dd96887f289a305afef3532a92a26e3c456ca7affdb44d97","src/rasterizer/mod.rs":"ada18efe55aa77caa6dfd3fedb0a71792e34895376906af5f11f75b4827e19cd","src/rasterizer/circle.rs":"029380b58dca23548496b744c286c0dda5551e0a3d0817c40857a34b27a4f2bf","src/rasterizer/polygon.rs":"708a0a957faa34640e830f30daf4d92b94b458082f252bb6cdfd880649f3c182","src/rasterizer/path.rs":"6598e85abbb27cde66164af7959c7cbe04adae9196fdcaee62ebfdc39a6c723b","Android.bp":"24e9d64f8ff2073d9ca6a144fbb21d5e4d489de76481930c7c1882509758fdfb","src/rasterizer/line.rs":"9529f3b1f441de8059a1fd400c3196320fe47887147639d4d531fddc746f11bb","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e",".cargo-checksum.json":"63a3b88c05b612fd2f407670c726dd38c145eb8699a6290dcd5fcd371c4a6704","src/lib.rs":"d46ec0ca2033f24c643fa7804536c09eaf16915960227583b829a4455588fc60","Cargo.toml":"6fcc5e7747e6db8c06981e324d55e524deb8bf741dba1a249f95cf89537625dd","TEST_MAPPING":"5df47f5b5b7533d10aa6a3ecb9189615e716a8060f002faa2bf4c893c12f33f9","README.md":"ddb69f5e9834d1b328083ba0c2a06efafe474ab62d13cd83aa6a732fb17eeb69","src/style.rs":"cb87e4a8ec84192a80d853539d3d50d0a54bb7c75eae8818fbc0a59186e565db","METADATA":"8e945219f3c076e2b4f7ca6c8304d2a86f8d70925069a7813dbd5f25536920c9","LICENSE":"1c9a706701fabb4345eddbdf9e1b9b60668d05f9df8e0ec9bf4b6e08a15c4e33","src/text.rs":"09129853156a58d896ea920c45f97881f157a46088b8e1d8b014d2407988640e"}}
\ No newline at end of file
diff --git a/crates/plotters-backend/.cargo-checksum.json b/crates/plotters-backend/.cargo-checksum.json
index 3372831..f761140 100644
--- a/crates/plotters-backend/.cargo-checksum.json
+++ b/crates/plotters-backend/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"c8624ca3be0b538da30206d6e26e26a99231d406160330003fa628eab19cc59e","LICENSE":"1e881ecf2862d01e6e5bc2b861e46886d2a6fb01499c0c508a209a7271b13cf2","README.md":"4c2c30ecd493e140c61242f4d01a4561dce72ae2c1a9be7df442f2a06f3f1db8","src/lib.rs":"31fe4a889ee62a18ec4eab32e8260bcf11d30830ef490be936a113404aa5a187","src/rasterizer/circle.rs":"5228c47ce8401c728b2c5cf213507dfafbaee2242e9720b308489e7eb4b2b834","src/rasterizer/line.rs":"79690b46f3ef7164a9484a78279047d0f4c52b10585d72a232d38af96b37d094","src/rasterizer/mod.rs":"186e8f15667306a2335e780860f58932639735a0ea0022c5e761137162478be0","src/rasterizer/path.rs":"1031fbe7e0e271ca55ee1a65bb9b9a0e2ec548226e78d325a558d832e1e9025e","src/rasterizer/polygon.rs":"a287a9afa26372b529447234868f08d87d5f69815af834847840c7bcf8559b31","src/rasterizer/rect.rs":"eac6b60b15908677dd8672e30486b1242c74ff72ac3988d5a669e1e5c8e2a83e","src/style.rs":"f6c2f04bcdd556e500a5853d8948ebcfaf990c738678b603c859ba6ef298e5d6","src/text.rs":"cc7867192642837cb8d632474ce40a3dafe9323a80537de27611d48f76a93fce"},"package":"9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609"}
\ No newline at end of file
+{"files":{"Cargo.toml":"076fa714c75a56010f96b5ef56daa107a870ac686f3eb632069fbb7c610eb68f","LICENSE":"1e881ecf2862d01e6e5bc2b861e46886d2a6fb01499c0c508a209a7271b13cf2","README.md":"4c2c30ecd493e140c61242f4d01a4561dce72ae2c1a9be7df442f2a06f3f1db8","src/lib.rs":"9de243b1a98f1ba6d4a058312bb279a0dd485d6334f966766e428ff16191f6d2","src/rasterizer/circle.rs":"e142d47f7f9d6f68b3eba0fa75137a8a01a19a2b2eebb6e4be9e3c259236b029","src/rasterizer/line.rs":"d308950fac60df0dfb7b5d2e3a785b50e42deebcf3d7443456b412ef9c3003a6","src/rasterizer/mod.rs":"186e8f15667306a2335e780860f58932639735a0ea0022c5e761137162478be0","src/rasterizer/path.rs":"817cdc74b09d9814d90d99d6608b8f263c8e400f15691a7be08273c10c2cbfa5","src/rasterizer/polygon.rs":"fc61d3b65c3391fd134c2988dcad682890657abbc1dc87190555568ad5d3b686","src/rasterizer/rect.rs":"eac6b60b15908677dd8672e30486b1242c74ff72ac3988d5a669e1e5c8e2a83e","src/style.rs":"f6c2f04bcdd556e500a5853d8948ebcfaf990c738678b603c859ba6ef298e5d6","src/text.rs":"e8ec09054613ffd92579da201b959d75655db8a1e737aff01ece5e2114e1a611"},"package":"df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a"}
\ No newline at end of file
diff --git a/crates/plotters-backend/Android.bp b/crates/plotters-backend/Android.bp
index 8c50012..81820f1 100644
--- a/crates/plotters-backend/Android.bp
+++ b/crates/plotters-backend/Android.bp
@@ -18,7 +18,7 @@
     host_supported: true,
     crate_name: "plotters_backend",
     cargo_env_compat: true,
-    cargo_pkg_version: "0.3.5",
+    cargo_pkg_version: "0.3.7",
     crate_root: "src/lib.rs",
     edition: "2018",
     apex_available: [
diff --git a/crates/plotters-backend/Cargo.toml b/crates/plotters-backend/Cargo.toml
index 7fd1039..09ed859 100644
--- a/crates/plotters-backend/Cargo.toml
+++ b/crates/plotters-backend/Cargo.toml
@@ -12,12 +12,21 @@
 [package]
 edition = "2018"
 name = "plotters-backend"
-version = "0.3.5"
+version = "0.3.7"
 authors = ["Hao Hou <haohou302@gmail.com>"]
+build = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
 description = "Plotters Backend API"
 homepage = "https://plotters-rs.github.io"
 readme = "README.md"
 license = "MIT"
 repository = "https://github.com/plotters-rs/plotters"
 
+[lib]
+name = "plotters_backend"
+path = "src/lib.rs"
+
 [dependencies]
diff --git a/crates/plotters-backend/METADATA b/crates/plotters-backend/METADATA
index 0a6b1f4..e11c6b5 100644
--- a/crates/plotters-backend/METADATA
+++ b/crates/plotters-backend/METADATA
@@ -1,17 +1,17 @@
 name: "plotters-backend"
 description: "Plotters Backend API"
 third_party {
-  version: "0.3.5"
+  version: "0.3.7"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
-    month: 2
-    day: 5
+    month: 12
+    day: 20
   }
   homepage: "https://crates.io/crates/plotters-backend"
   identifier {
     type: "Archive"
-    value: "https://static.crates.io/crates/plotters-backend/plotters-backend-0.3.5.crate"
-    version: "0.3.5"
+    value: "https://static.crates.io/crates/plotters-backend/plotters-backend-0.3.7.crate"
+    version: "0.3.7"
   }
 }
diff --git a/crates/plotters-backend/src/lib.rs b/crates/plotters-backend/src/lib.rs
index d4fd904..0b35d1a 100644
--- a/crates/plotters-backend/src/lib.rs
+++ b/crates/plotters-backend/src/lib.rs
@@ -3,7 +3,7 @@
   Plotters project, please check the [main crate](https://crates.io/crates/plotters).
 
   This is the crate that used as the connector between Plotters and different backend crates. Since Plotters 0.3, all the backends has been
-  hosted as seperate crates for the usability and maintainability reasons.
+  hosted as separate crates for the usability and maintainability reasons.
 
   At the same time, Plotters is now supporting third-party backends and all the backends are now supports "plug-and-play":
   To use a external backend, just depends on both the Plotters main crate and the third-party backend crate.
@@ -16,7 +16,7 @@
 
   If the backend only implements [DrawingBackend::draw_pixel](trait.DrawingBackend.html#tymethod.draw_pixel), the default CPU rasterizer will be
   used to give your backend ability of drawing different shapes. For those backend that supports advanced drawing instructions, such as, GPU
-  acelerated shape drawing, all the provided trait method can be overriden from the specific backend code.
+  accelerated shape drawing, all the provided trait method can be overridden from the specific backend code.
 
   If your backend have text rendering ability, you may want to override the [DrawingBackend::estimate_text_size](trait.DrawingBackend.html#tymethod.estimate_text_size)
   to avoid wrong spacing, since the Plotters default text handling code may behaves differently from the backend in terms of text rendering.
@@ -33,7 +33,7 @@
   ```text
                                         .ensure_prepared() &&
     +-------------+    +-------------+    .draw_pixels()             +--------------+   drop
-    |Start drwaing|--->|Ready to draw| ------------------------+---->|Finish 1 frame| --------->
+    |Start drawing|--->|Ready to draw| ------------------------+---->|Finish 1 frame| --------->
     +-------------+    +-------------+                         |     +--------------+
            ^                  ^                                |            |
            |                  +------------------------------- +            |
@@ -48,12 +48,12 @@
   - For dynamic drawing, frames are defined by invocation of `DrawingBackend::present`, everything prior the invocation should belongs to previous frame
 
   # Compatibility Note
-  Since Plotters v0.3, plotters use the "plug-and-play" schema to import backends, this requires both Plotters and the backend crates depdens on a
+  Since Plotters v0.3, plotters use the "plug-and-play" schema to import backends, this requires both Plotters and the backend crates depends on a
   same version of `plotters-backend` crate. This crate (`plotters-backend`) will enforce that any revision (means the last number in a version number)
   won't contains breaking change - both on the Plotters side and backend side.
 
   Plotters main crate is always importing the backend crate with version specification `plotters-backend = "^<major>.<minor>*"`.
-  It's highly recommended that all the external crates follows the same rule to import `plotters-backend` depdendency, to avoid protential breaking
+  It's highly recommended that all the external crates follows the same rule to import `plotters-backend` dependency, to avoid potential breaking
   caused by `plotters-backend` crates gets a revision update.
 
   We also impose a versioning rule with `plotters` and some backends:
@@ -233,8 +233,8 @@
             .layout_box(text)
             .map_err(|e| DrawingErrorKind::FontError(Box::new(e)))?;
         let ((min_x, min_y), (max_x, max_y)) = layout;
-        let width = (max_x - min_x) as i32;
-        let height = (max_y - min_y) as i32;
+        let width = max_x - min_x;
+        let height = max_y - min_y;
         let dx = match style.anchor().h_pos {
             HPos::Left => 0,
             HPos::Right => -width,
@@ -247,7 +247,7 @@
         };
         let trans = style.transform();
         let (w, h) = self.get_size();
-        match style.draw(text, (0, 0), |x, y, color| {
+        let drawing_result = style.draw(text, (0, 0), |x, y, color| {
             let (x, y) = trans.transform(x + dx - min_x, y + dy - min_y);
             let (x, y) = (pos.0 + x, pos.1 + y);
             if x >= 0 && x < w as i32 && y >= 0 && y < h as i32 {
@@ -255,7 +255,8 @@
             } else {
                 Ok(())
             }
-        }) {
+        });
+        match drawing_result {
             Ok(drawing_result) => drawing_result,
             Err(font_error) => Err(DrawingErrorKind::FontError(Box::new(font_error))),
         }
@@ -308,9 +309,9 @@
                     break;
                 }
                 // FIXME: This assume we have RGB image buffer
-                let r = src[(dx + dy * w) as usize * 3];
-                let g = src[(dx + dy * w) as usize * 3 + 1];
-                let b = src[(dx + dy * w) as usize * 3 + 2];
+                let r = src[(dx + dy * iw) as usize * 3];
+                let g = src[(dx + dy * iw) as usize * 3 + 1];
+                let b = src[(dx + dy * iw) as usize * 3 + 2];
                 let color = BackendColor {
                     alpha: 1.0,
                     rgb: (r, g, b),
diff --git a/crates/plotters-backend/src/rasterizer/circle.rs b/crates/plotters-backend/src/rasterizer/circle.rs
index 0584167..fa7fc50 100644
--- a/crates/plotters-backend/src/rasterizer/circle.rs
+++ b/crates/plotters-backend/src/rasterizer/circle.rs
@@ -53,9 +53,9 @@
     let (x0, x1) = ((-half_size).ceil() as i32, half_size.floor() as i32);
 
     for x in x0..x1 {
-        let outter_y0 = ((r_limit as f64) * (r_limit as f64) - x as f64 * x as f64).sqrt();
+        let outer_y0 = ((r_limit as f64) * (r_limit as f64) - x as f64 * x as f64).sqrt();
         let inner_y0 = r as f64 - 1.0;
-        let mut y1 = outter_y0.min(inner_y0);
+        let mut y1 = outer_y0.min(inner_y0);
         let y0 = ((r as f64) * (r as f64) - x as f64 * x as f64).sqrt();
 
         if y0 > y1 {
@@ -69,9 +69,9 @@
     }
 
     for x in x1 + 1..r {
-        let outter_y0 = ((r_limit as f64) * (r_limit as f64) - x as f64 * x as f64).sqrt();
+        let outer_y0 = ((r_limit as f64) * (r_limit as f64) - x as f64 * x as f64).sqrt();
         let inner_y0 = r as f64 - 1.0;
-        let y0 = outter_y0.min(inner_y0);
+        let y0 = outer_y0.min(inner_y0);
         let y1 = x as f64;
 
         if y1 < y0 {
@@ -168,7 +168,6 @@
             radius.0 as f64 - a0,
             a1.floor(),
             |h, (f, t)| {
-                let h = h as i32;
                 let f = f as i32;
                 let t = t as i32;
                 check_result!(b.draw_line(
@@ -220,8 +219,8 @@
     ));
 
     let d_inner = ((radius.1 as f64) / (2f64).sqrt()) as i32;
-    let d_outter = (((radius.0 as f64) / (2f64).sqrt()) as i32).min(radius.1 as i32 - 1);
-    let d_outter_actually = (radius.1 as i32).min(
+    let d_outer = (((radius.0 as f64) / (2f64).sqrt()) as i32).min(radius.1 as i32 - 1);
+    let d_outer_actually = (radius.1 as i32).min(
         (radius.0 as f64 * radius.0 as f64 - radius.1 as f64 * radius.1 as f64 / 2.0)
             .sqrt()
             .ceil() as i32,
@@ -229,43 +228,43 @@
 
     check_result!(b.draw_line(
         (center.0 - d_inner, center.1 - d_inner),
-        (center.0 - d_outter, center.1 - d_outter),
+        (center.0 - d_outer, center.1 - d_outer),
         &style.color()
     ));
     check_result!(b.draw_line(
         (center.0 + d_inner, center.1 - d_inner),
-        (center.0 + d_outter, center.1 - d_outter),
+        (center.0 + d_outer, center.1 - d_outer),
         &style.color()
     ));
     check_result!(b.draw_line(
         (center.0 - d_inner, center.1 + d_inner),
-        (center.0 - d_outter, center.1 + d_outter),
+        (center.0 - d_outer, center.1 + d_outer),
         &style.color()
     ));
     check_result!(b.draw_line(
         (center.0 + d_inner, center.1 + d_inner),
-        (center.0 + d_outter, center.1 + d_outter),
+        (center.0 + d_outer, center.1 + d_outer),
         &style.color()
     ));
 
     check_result!(b.draw_line(
         (center.0 - d_inner, center.1 + d_inner),
-        (center.0 - d_outter_actually, center.1 + d_inner),
+        (center.0 - d_outer_actually, center.1 + d_inner),
         &style.color()
     ));
     check_result!(b.draw_line(
         (center.0 + d_inner, center.1 - d_inner),
-        (center.0 + d_inner, center.1 - d_outter_actually),
+        (center.0 + d_inner, center.1 - d_outer_actually),
         &style.color()
     ));
     check_result!(b.draw_line(
         (center.0 + d_inner, center.1 + d_inner),
-        (center.0 + d_inner, center.1 + d_outter_actually),
+        (center.0 + d_inner, center.1 + d_outer_actually),
         &style.color()
     ));
     check_result!(b.draw_line(
         (center.0 + d_inner, center.1 + d_inner),
-        (center.0 + d_outter_actually, center.1 + d_inner),
+        (center.0 + d_outer_actually, center.1 + d_inner),
         &style.color()
     ));
 
diff --git a/crates/plotters-backend/src/rasterizer/line.rs b/crates/plotters-backend/src/rasterizer/line.rs
index 17836d9..ae1ddd4 100644
--- a/crates/plotters-backend/src/rasterizer/line.rs
+++ b/crates/plotters-backend/src/rasterizer/line.rs
@@ -110,7 +110,7 @@
     }
 
     if to.0 > batch_limit && y < f64::from(to.1) {
-        let x = batch_limit as i32 + 1;
+        let x = batch_limit + 1;
         if 1.0 + y.floor() - y > 1e-5 {
             check_result!(put_pixel((x, y as i32), 1.0 + y.floor() - y));
         }
diff --git a/crates/plotters-backend/src/rasterizer/path.rs b/crates/plotters-backend/src/rasterizer/path.rs
index eae0bfe..004461c 100644
--- a/crates/plotters-backend/src/rasterizer/path.rs
+++ b/crates/plotters-backend/src/rasterizer/path.rs
@@ -34,8 +34,8 @@
         f64::from(triple[1].1) + d * b_n.1,
     );
 
-    // Check if 3 points are colinear. If so, just emit the point.
-    if a_t.1 * b_t.0 == a_t.0 * b_t.1 {
+    // Check if 3 points are colinear, up to precision. If so, just emit the point.
+    if (a_t.1 * b_t.0 - a_t.0 * b_t.1).abs() <= f64::EPSILON {
         buf.push((a_p.0 as i32, a_p.1 as i32));
         return;
     }
@@ -61,20 +61,14 @@
     let b1 = -b_t.1;
     let c1 = b_p.1 - a_p.1;
 
-    let mut x = f64::INFINITY;
-    let mut y = f64::INFINITY;
-
-    // Well if the determinant is not 0, then we can actuall get a intersection point.
-    if (a0 * b1 - a1 * b0).abs() > f64::EPSILON {
-        let u = (c0 * b1 - c1 * b0) / (a0 * b1 - a1 * b0);
-
-        x = a_p.0 + u * a_t.0;
-        y = a_p.1 + u * a_t.1;
-    }
+    // Since the points are not collinear, the determinant is not 0, and we can get a intersection point.
+    let u = (c0 * b1 - c1 * b0) / (a0 * b1 - a1 * b0);
+    let x = a_p.0 + u * a_t.0;
+    let y = a_p.1 + u * a_t.1;
 
     let cross_product = a_t.0 * b_t.1 - a_t.1 * b_t.0;
     if (cross_product < 0.0 && d < 0.0) || (cross_product > 0.0 && d > 0.0) {
-        // Then we are at the outter side of the angle, so we need to consider a cap.
+        // Then we are at the outer side of the angle, so we need to consider a cap.
         let dist_square = (x - triple[1].0 as f64).powi(2) + (y - triple[1].1 as f64).powi(2);
         // If the point is too far away from the line, we need to cap it.
         if dist_square > d * d * 16.0 {
@@ -149,3 +143,30 @@
 
     ret
 }
+
+#[cfg(test)]
+mod test {
+    use super::*;
+
+    /// Test for regression with respect to https://github.com/plotters-rs/plotters/issues/562
+    #[test]
+    fn test_no_inf_in_compute_polygon_vertex() {
+        let path = [(335, 386), (338, 326), (340, 286)];
+        let mut buf = Vec::new();
+        compute_polygon_vertex(&path, 2.0, buf.as_mut());
+        assert!(!buf.is_empty());
+        let nani32 = f64::INFINITY as i32;
+        assert!(!buf.iter().any(|&v| v.0 == nani32 || v.1 == nani32));
+    }
+
+    /// Correct 90 degree turn to the right
+    #[test]
+    fn standard_corner() {
+        let path = [(10, 10), (20, 10), (20, 20)];
+        let mut buf = Vec::new();
+        compute_polygon_vertex(&path, 2.0, buf.as_mut());
+        assert!(!buf.is_empty());
+        let buf2 = vec![(18, 12)];
+        assert_eq!(buf, buf2);
+    }
+}
diff --git a/crates/plotters-backend/src/rasterizer/polygon.rs b/crates/plotters-backend/src/rasterizer/polygon.rs
index ce33c5c..a91baf5 100644
--- a/crates/plotters-backend/src/rasterizer/polygon.rs
+++ b/crates/plotters-backend/src/rasterizer/polygon.rs
@@ -49,7 +49,7 @@
 
 impl PartialOrd for Edge {
     fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
-        self.get_slave_pos().partial_cmp(&other.get_slave_pos())
+        Some(self.cmp(other))
     }
 }
 
diff --git a/crates/plotters-backend/src/text.rs b/crates/plotters-backend/src/text.rs
index 16e2c66..98fe4be 100644
--- a/crates/plotters-backend/src/text.rs
+++ b/crates/plotters-backend/src/text.rs
@@ -60,9 +60,10 @@
 /// ```
 pub mod text_anchor {
     /// The horizontal position of the anchor point relative to the text.
-    #[derive(Clone, Copy)]
+    #[derive(Clone, Copy, Default)]
     pub enum HPos {
         /// Anchor point is on the left side of the text
+        #[default]
         Left,
         /// Anchor point is on the right side of the text
         Right,
@@ -71,9 +72,10 @@
     }
 
     /// The vertical position of the anchor point relative to the text.
-    #[derive(Clone, Copy)]
+    #[derive(Clone, Copy, Default)]
     pub enum VPos {
         /// Anchor point is on the top of the text
+        #[default]
         Top,
         /// Anchor point is in the vertical center of the text
         Center,
@@ -82,7 +84,7 @@
     }
 
     /// The text anchor position.
-    #[derive(Clone, Copy)]
+    #[derive(Clone, Copy, Default)]
     pub struct Pos {
         /// The horizontal position of the anchor point
         pub h_pos: HPos,
@@ -105,22 +107,6 @@
         pub fn new(h_pos: HPos, v_pos: VPos) -> Self {
             Pos { h_pos, v_pos }
         }
-
-        /// Create a default text anchor position (top left).
-        ///
-        /// - **returns** The default text anchor position
-        ///
-        /// ```rust
-        /// use plotters_backend::text_anchor::{Pos, HPos, VPos};
-        ///
-        /// let pos = Pos::default();
-        /// ```
-        pub fn default() -> Self {
-            Pos {
-                h_pos: HPos::Left,
-                v_pos: VPos::Top,
-            }
-        }
     }
 }
 
@@ -201,8 +187,8 @@
 /// text drawing, those font information provides instructions about how the text should be
 /// rendered: color, size, slant, anchor, font, etc.
 ///
-/// This trait decouples the detailed implementaiton about the font and the backend code which
-/// wants to perfome some operation on the font.
+/// This trait decouples the detailed implementation about the font and the backend code which
+/// wants to perform some operation on the font.
 ///
 pub trait BackendTextStyle {
     /// The error type of this text style implementation
diff --git a/pseudo_crate/Cargo.lock b/pseudo_crate/Cargo.lock
index 8b5def0..5b50301 100644
--- a/pseudo_crate/Cargo.lock
+++ b/pseudo_crate/Cargo.lock
@@ -3967,9 +3967,9 @@
 
 [[package]]
 name = "plotters-backend"
-version = "0.3.5"
+version = "0.3.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609"
+checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a"
 
 [[package]]
 name = "plotters-bitmap"
diff --git a/pseudo_crate/Cargo.toml b/pseudo_crate/Cargo.toml
index 6484aad..f4f5621 100644
--- a/pseudo_crate/Cargo.toml
+++ b/pseudo_crate/Cargo.toml
@@ -246,7 +246,7 @@
 pkcs1 = "=0.7.5"
 pkcs8 = "=0.10.2"
 plotters = "=0.3.5"
-plotters-backend = "=0.3.5"
+plotters-backend = "=0.3.7"
 plotters-svg = "=0.3.5"
 poll_token_derive = "=0.1.0"
 ppv-lite86 = "=0.2.17"