Skip to content

[flutter_svg] tspan misplaced when inside nested g with translate transform. #189925

Closed
flutter/packages
#13129

Description

@osoftware

What package does this bug report belong to?

flutter_svg

What target platforms are you seeing this bug on?

Windows

Have you already upgraded your packages?

Yes

Dependency versions

pubspec.lock
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
  args:
    dependency: transitive
    description:
      name: args
      sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04
      url: "https://pub.dev"
    source: hosted
    version: "2.7.0"
  async:
    dependency: transitive
    description:
      name: async
      sha256: e2eb0491ba5ddb6177742d2da23904574082139b07c1e33b8503b9f46f3e1a37
      url: "https://pub.dev"
    source: hosted
    version: "2.13.1"
  boolean_selector:
    dependency: transitive
    description:
      name: boolean_selector
      sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea"
      url: "https://pub.dev"
    source: hosted
    version: "2.1.2"
  characters:
    dependency: transitive
    description:
      name: characters
      sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b
      url: "https://pub.dev"
    source: hosted
    version: "1.4.1"
  clock:
    dependency: transitive
    description:
      name: clock
      sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
      url: "https://pub.dev"
    source: hosted
    version: "1.1.2"
  collection:
    dependency: transitive
    description:
      name: collection
      sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
      url: "https://pub.dev"
    source: hosted
    version: "1.19.1"
  cupertino_icons:
    dependency: "direct main"
    description:
      name: cupertino_icons
      sha256: "41e005c33bd814be4d3096aff55b1908d419fde52ca656c8c47719ec745873cd"
      url: "https://pub.dev"
    source: hosted
    version: "1.0.9"
  exsurgat:
    dependency: "direct main"
    description:
      path: ".."
      relative: true
    source: path
    version: "0.0.1"
  fake_async:
    dependency: transitive
    description:
      name: fake_async
      sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44"
      url: "https://pub.dev"
    source: hosted
    version: "1.3.3"
  flutter:
    dependency: "direct main"
    description: flutter
    source: sdk
    version: "0.0.0"
  flutter_lints:
    dependency: "direct dev"
    description:
      name: flutter_lints
      sha256: "3105dc8492f6183fb076ccf1f351ac3d60564bff92e20bfc4af9cc1651f4e7e1"
      url: "https://pub.dev"
    source: hosted
    version: "6.0.0"
  flutter_svg:
    dependency: "direct main"
    description:
      name: flutter_svg
      sha256: "35882981abcbfb8c15b286f0cd690ff25bac12d95eff3e25ee207f37d4c42e7f"
      url: "https://pub.dev"
    source: hosted
    version: "2.3.0"
  flutter_test:
    dependency: "direct dev"
    description: flutter
    source: sdk
    version: "0.0.0"
  flutter_web_plugins:
    dependency: transitive
    description: flutter
    source: sdk
    version: "0.0.0"
  http:
    dependency: transitive
    description:
      name: http
      sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412"
      url: "https://pub.dev"
    source: hosted
    version: "1.6.0"
  http_parser:
    dependency: transitive
    description:
      name: http_parser
      sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
      url: "https://pub.dev"
    source: hosted
    version: "4.1.2"
  leak_tracker:
    dependency: transitive
    description:
      name: leak_tracker
      sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de"
      url: "https://pub.dev"
    source: hosted
    version: "11.0.2"
  leak_tracker_flutter_testing:
    dependency: transitive
    description:
      name: leak_tracker_flutter_testing
      sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1"
      url: "https://pub.dev"
    source: hosted
    version: "3.0.10"
  leak_tracker_testing:
    dependency: transitive
    description:
      name: leak_tracker_testing
      sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1"
      url: "https://pub.dev"
    source: hosted
    version: "3.0.2"
  lints:
    dependency: transitive
    description:
      name: lints
      sha256: "12f842a479589fea194fe5c5a3095abc7be0c1f2ddfa9a0e76aed1dbd26a87df"
      url: "https://pub.dev"
    source: hosted
    version: "6.1.0"
  matcher:
    dependency: transitive
    description:
      name: matcher
      sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861
      url: "https://pub.dev"
    source: hosted
    version: "0.12.19"
  material_color_utilities:
    dependency: transitive
    description:
      name: material_color_utilities
      sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b"
      url: "https://pub.dev"
    source: hosted
    version: "0.13.0"
  meta:
    dependency: transitive
    description:
      name: meta
      sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394"
      url: "https://pub.dev"
    source: hosted
    version: "1.17.0"
  path:
    dependency: transitive
    description:
      name: path
      sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
      url: "https://pub.dev"
    source: hosted
    version: "1.9.1"
  path_parsing:
    dependency: transitive
    description:
      name: path_parsing
      sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca"
      url: "https://pub.dev"
    source: hosted
    version: "1.1.0"
  petitparser:
    dependency: transitive
    description:
      name: petitparser
      sha256: "91bd59303e9f769f108f8df05e371341b15d59e995e6806aefab827b58336675"
      url: "https://pub.dev"
    source: hosted
    version: "7.0.2"
  plugin_platform_interface:
    dependency: transitive
    description:
      name: plugin_platform_interface
      sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
      url: "https://pub.dev"
    source: hosted
    version: "2.1.8"
  sky_engine:
    dependency: transitive
    description: flutter
    source: sdk
    version: "0.0.0"
  source_span:
    dependency: transitive
    description:
      name: source_span
      sha256: "56a02f1f4cd1a2d96303c0144c93bd6d909eea6bee6bf5a0e0b685edbd4c47ab"
      url: "https://pub.dev"
    source: hosted
    version: "1.10.2"
  stack_trace:
    dependency: transitive
    description:
      name: stack_trace
      sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
      url: "https://pub.dev"
    source: hosted
    version: "1.12.1"
  stream_channel:
    dependency: transitive
    description:
      name: stream_channel
      sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
      url: "https://pub.dev"
    source: hosted
    version: "2.1.4"
  string_scanner:
    dependency: transitive
    description:
      name: string_scanner
      sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43"
      url: "https://pub.dev"
    source: hosted
    version: "1.4.1"
  term_glyph:
    dependency: transitive
    description:
      name: term_glyph
      sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e"
      url: "https://pub.dev"
    source: hosted
    version: "1.2.2"
  test_api:
    dependency: transitive
    description:
      name: test_api
      sha256: "8161c84903fd860b26bfdefb7963b3f0b68fee7adea0f59ef805ecca346f0c7a"
      url: "https://pub.dev"
    source: hosted
    version: "0.7.10"
  typed_data:
    dependency: transitive
    description:
      name: typed_data
      sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
      url: "https://pub.dev"
    source: hosted
    version: "1.4.0"
  vector_graphics:
    dependency: transitive
    description:
      name: vector_graphics
      sha256: "2306c03da2ba81724afeb589c351ebbc0aa7d86005925be8f8735856dbe5e42d"
      url: "https://pub.dev"
    source: hosted
    version: "1.2.2"
  vector_graphics_codec:
    dependency: transitive
    description:
      name: vector_graphics_codec
      sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146"
      url: "https://pub.dev"
    source: hosted
    version: "1.1.13"
  vector_graphics_compiler:
    dependency: transitive
    description:
      name: vector_graphics_compiler
      sha256: "142a9146f447d15b10bdc00e21d5f4d83e5b32bb5f8f8f5a04c75311344923a3"
      url: "https://pub.dev"
    source: hosted
    version: "1.2.6"
  vector_math:
    dependency: transitive
    description:
      name: vector_math
      sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b
      url: "https://pub.dev"
    source: hosted
    version: "2.2.0"
  vm_service:
    dependency: transitive
    description:
      name: vm_service
      sha256: "0016aef94fc66495ac78af5859181e3f3bf2026bd8eecc72b9565601e19ab360"
      url: "https://pub.dev"
    source: hosted
    version: "15.2.0"
  web:
    dependency: transitive
    description:
      name: web
      sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
      url: "https://pub.dev"
    source: hosted
    version: "1.1.1"
  webview_all:
    dependency: "direct main"
    description:
      name: webview_all
      sha256: "618828779774dfc4cf726bbdcb323dd4b2482b81e7df2cb4218c5bb916369019"
      url: "https://pub.dev"
    source: hosted
    version: "1.2.1"
  webview_all_linux:
    dependency: transitive
    description:
      name: webview_all_linux
      sha256: "8303b57455ed4ac646102cbdb46a5f69c23cca0d1bd6e27adb76b5afc4dec679"
      url: "https://pub.dev"
    source: hosted
    version: "1.2.1"
  webview_all_ohos:
    dependency: transitive
    description:
      name: webview_all_ohos
      sha256: a5601f843d7d6fffc41ffe6946d435220496c755a72f1a4014cdbd614991d444
      url: "https://pub.dev"
    source: hosted
    version: "1.2.1"
  webview_all_web:
    dependency: transitive
    description:
      name: webview_all_web
      sha256: fd5d2a3f35a76e5e8e8819a9c41cf243a8bd875b1b3814798946f512c9b258fe
      url: "https://pub.dev"
    source: hosted
    version: "1.2.1"
  webview_all_windows:
    dependency: transitive
    description:
      name: webview_all_windows
      sha256: "95e7b0abdd893d4c2b186b21a2fb8a383a909044a10190e9d94b199cb0a6a46c"
      url: "https://pub.dev"
    source: hosted
    version: "1.2.1"
  webview_flutter_android:
    dependency: transitive
    description:
      name: webview_flutter_android
      sha256: ad5182eff9a550925330cb9f0cb038eddfdd5712aba8b77aa0f0400e50f6e688
      url: "https://pub.dev"
    source: hosted
    version: "4.12.0"
  webview_flutter_platform_interface:
    dependency: transitive
    description:
      name: webview_flutter_platform_interface
      sha256: "1221c1b12f5278791042f2ec2841743784cf25c5a644e23d6680e5d718824f04"
      url: "https://pub.dev"
    source: hosted
    version: "2.15.1"
  webview_flutter_wkwebview:
    dependency: transitive
    description:
      name: webview_flutter_wkwebview
      sha256: "82648217f537573e1ca9ae9952d3eacedca6ab5aee69dc84445fc763766dcea2"
      url: "https://pub.dev"
    source: hosted
    version: "3.25.1"
  xml:
    dependency: transitive
    description:
      name: xml
      sha256: "67f0aff7be013d107995e9b75bf4e7f2c3ef2dfdb2c8e68024bba0a7fd5756a4"
      url: "https://pub.dev"
    source: hosted
    version: "7.0.1"
sdks:
  dart: ">=3.11.4 <4.0.0"
  flutter: ">=3.38.0"

Steps to reproduce

Render the following SVG image:

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="400" height="100" font-family="Arial">
  <rect x="10" y="10" width="200" height="45" fill="gray" />
  <g id="outer" transform="translate(10,10)">
    <rect x="10" y="10" width="200" height="45" fill="blue" />
    <g id="inner" transform="translate(10,10)">
      <rect x="10" y="10" width="200" height="45" fill="green" />
      <text x="15" y="25">bare text</text>
      <text x="15" y="50"><tspan>text in tspan</tspan></text>
    </g>
  </g>
</svg>

Expected results

The same translate transformation is applied to both text elements. It's a sum of transtalions from inner and outer g element. Chrome-based browser renders it as follows:

Image

Actual results

While bare text bahaves correctly, the text wrapped in tspan element seems to have both translations applied twice.

Image

Code sample

Code sample
SvgPicture.string(_xml),

Screenshots or Videos

Screenshots / Video demonstration

[Upload media here]

Logs

Logs
[Paste your logs here]

Flutter Doctor output

Doctor output
[√] Flutter (Channel stable, 3.41.6, on Microsoft Windows [Version 10.0.26200.8875], locale pl-PL) [474ms]
    • Flutter version 3.41.6 on channel stable at C:\Users\bszyp\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision db50e20168 (4 months ago), 2026-03-25 16:21:00 -0700
    • Engine revision 425cfb54d0
    • Dart version 3.11.4
    • DevTools version 2.54.2
    • Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop, enable-windows-desktop, enable-android, enable-ios, cli-animations, enable-native-assets,
      omit-legacy-version-file, enable-lldb-debugging, enable-uiscene-migration

[√] Windows Version (11 Home 64-bit, 25H2, 2009) [1 315ms]

[√] Android toolchain - develop for Android devices (Android SDK version 36.1.0) [3,0s]
    • Android SDK at C:\Users\bszyp\AppData\Local\Android\sdk
    • Emulator version 36.4.9.0 (build_id 14788078) (CL:N/A)
    • Platform android-36, build-tools 36.1.0
    • ANDROID_HOME = C:\Users\bszyp\AppData\Local\Android\sdk
    • Java binary at: C:\Program Files\Android\Android Studio\jbr\bin\java
      This is the JDK bundled with the latest Android Studio installation on this machine.
      To manually set the JDK path, use: `flutter config --jdk-dir="path/to/jdk"`.
    • Java version OpenJDK Runtime Environment (build 21.0.9+-14787801-b1163.94)
    • All Android licenses accepted.

[√] Chrome - develop for the web [168ms]
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[√] Visual Studio - develop Windows apps (Visual Studio Build Tools 2022 17.14.29 (March 2026)) [166ms]
    • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools
    • Visual Studio Build Tools 2022 version 17.14.37111.16
    • Windows 10 SDK version 10.0.22621.0

[√] Connected device (3 available) [213ms]
    • Windows (desktop) • windows • windows-x64    • Microsoft Windows [Version 10.0.26200.8875]
    • Chrome (web)      • chrome  • web-javascript • Google Chrome 150.0.7871.124
    • Edge (web)        • edge    • web-javascript • Microsoft Edge 150.0.4078.83

[√] Network resources [307ms]
    • All expected network resources are available.

• No issues found!

Activity

  1. changed the title [-][flutter_svg] tspan pisplaced when inside nested g with translate transform.[/-] [+][flutter_svg] tspan misplaced when inside nested g with translate transform.[/+] on Jul 23, 2026
  2. suryaKommana2662 commented on Jul 24, 2026

    @suryaKommana2662
    Contributor

    @osoftware Thank you for providing the detailed reproduction steps and pubspec.lock file. I noticed that the issue was reported using Flutter 3.41.6. Could you please verify whether the issue is still reproducible with the latest Flutter stable release? This will help us determine whether the behavior is still present in the latest version or may have been addressed by a recent update.

  3. added
    waiting for responseThe Flutter team cannot make further progress on this issue until the original reporter responds
    and removed
    in triagePresently being triaged by the triage team
    on Jul 24, 2026
  4. osoftware commented on Jul 24, 2026

    @osoftware
    Author

    Yes, it's still bahaving the same in Flutter 3.44.8.

    flutter docktor:

    [√] Flutter (Channel stable, 3.44.8, on Microsoft Windows [Version 10.0.26200.8875], locale pl-PL) [452ms]
        • Flutter version 3.44.8 on channel stable at C:\Users\bszyp\flutter
        • Upstream repository https://github.com/flutter/flutter.git
        • Framework revision 058e0af2c2 (20 hours ago), 2026-07-23 10:56:21 -0700
        • Engine revision 0cd610717b
        • Dart version 3.12.2
        • DevTools version 2.57.0
        • Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop, enable-windows-desktop, enable-android, enable-ios, cli-animations, enable-native-assets,
          enable-swift-package-manager, omit-legacy-version-file, enable-lldb-debugging, enable-uiscene-migration
    
    [√] Windows Version (11 Home 64-bit, 25H2, 2009) [1 093ms]
    
    [√] Android toolchain - develop for Android devices (Android SDK version 36.1.0) [2,3s]
        • Android SDK at C:\Users\bszyp\AppData\Local\Android\sdk
        • Emulator version 36.4.9.0 (build_id 14788078) (CL:N/A)
        • Platform android-36, build-tools 36.1.0
        • ANDROID_HOME = C:\Users\bszyp\AppData\Local\Android\sdk
        • Java binary at: C:\Program Files\Android\Android Studio\jbr\bin\java
          This is the JDK bundled with the latest Android Studio installation on this machine.
          To manually set the JDK path, use: `flutter config --jdk-dir="path/to/jdk"`.
        • Java version OpenJDK Runtime Environment (build 21.0.9+-14787801-b1163.94)
        • All Android licenses accepted.
    
    [√] Chrome - develop for the web [166ms]
        • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe
    
    [√] Visual Studio - develop Windows apps (Visual Studio Build Tools 2022 17.14.29 (March 2026)) [164ms]
        • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools
        • Visual Studio Build Tools 2022 version 17.14.37111.16
        • Windows 10 SDK version 10.0.22621.0
    
    [√] Connected device (3 available) [209ms]
        • Windows (desktop) • windows • windows-x64    • Microsoft Windows [Version 10.0.26200.8875]
        • Chrome (web)      • chrome  • web-javascript • Google Chrome 150.0.7871.124
        • Edge (web)        • edge    • web-javascript • Microsoft Edge 150.0.4078.83
    
    [√] Network resources [582ms]
        • All expected network resources are available.
    

    lockfile:

    # Generated by pub
    # See https://dart.dev/tools/pub/glossary#lockfile
    packages:
      args:
        dependency: transitive
        description:
          name: args
          sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04
          url: "https://pub.dev"
        source: hosted
        version: "2.7.0"
      async:
        dependency: transitive
        description:
          name: async
          sha256: e2eb0491ba5ddb6177742d2da23904574082139b07c1e33b8503b9f46f3e1a37
          url: "https://pub.dev"
        source: hosted
        version: "2.13.1"
      boolean_selector:
        dependency: transitive
        description:
          name: boolean_selector
          sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea"
          url: "https://pub.dev"
        source: hosted
        version: "2.1.2"
      characters:
        dependency: transitive
        description:
          name: characters
          sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b
          url: "https://pub.dev"
        source: hosted
        version: "1.4.1"
      clock:
        dependency: transitive
        description:
          name: clock
          sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
          url: "https://pub.dev"
        source: hosted
        version: "1.1.2"
      collection:
        dependency: transitive
        description:
          name: collection
          sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
          url: "https://pub.dev"
        source: hosted
        version: "1.19.1"
      cupertino_icons:
        dependency: "direct main"
        description:
          name: cupertino_icons
          sha256: "41e005c33bd814be4d3096aff55b1908d419fde52ca656c8c47719ec745873cd"
          url: "https://pub.dev"
        source: hosted
        version: "1.0.9"
      exsurgat:
        dependency: "direct main"
        description:
          path: ".."
          relative: true
        source: path
        version: "0.0.1"
      fake_async:
        dependency: transitive
        description:
          name: fake_async
          sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44"
          url: "https://pub.dev"
        source: hosted
        version: "1.3.3"
      flutter:
        dependency: "direct main"
        description: flutter
        source: sdk
        version: "0.0.0"
      flutter_lints:
        dependency: "direct dev"
        description:
          name: flutter_lints
          sha256: "3105dc8492f6183fb076ccf1f351ac3d60564bff92e20bfc4af9cc1651f4e7e1"
          url: "https://pub.dev"
        source: hosted
        version: "6.0.0"
      flutter_svg:
        dependency: "direct main"
        description:
          name: flutter_svg
          sha256: "35882981abcbfb8c15b286f0cd690ff25bac12d95eff3e25ee207f37d4c42e7f"
          url: "https://pub.dev"
        source: hosted
        version: "2.3.0"
      flutter_test:
        dependency: "direct dev"
        description: flutter
        source: sdk
        version: "0.0.0"
      flutter_web_plugins:
        dependency: transitive
        description: flutter
        source: sdk
        version: "0.0.0"
      http:
        dependency: transitive
        description:
          name: http
          sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412"
          url: "https://pub.dev"
        source: hosted
        version: "1.6.0"
      http_parser:
        dependency: transitive
        description:
          name: http_parser
          sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
          url: "https://pub.dev"
        source: hosted
        version: "4.1.2"
      leak_tracker:
        dependency: transitive
        description:
          name: leak_tracker
          sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de"
          url: "https://pub.dev"
        source: hosted
        version: "11.0.2"
      leak_tracker_flutter_testing:
        dependency: transitive
        description:
          name: leak_tracker_flutter_testing
          sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1"
          url: "https://pub.dev"
        source: hosted
        version: "3.0.10"
      leak_tracker_testing:
        dependency: transitive
        description:
          name: leak_tracker_testing
          sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1"
          url: "https://pub.dev"
        source: hosted
        version: "3.0.2"
      lints:
        dependency: transitive
        description:
          name: lints
          sha256: "12f842a479589fea194fe5c5a3095abc7be0c1f2ddfa9a0e76aed1dbd26a87df"
          url: "https://pub.dev"
        source: hosted
        version: "6.1.0"
      matcher:
        dependency: transitive
        description:
          name: matcher
          sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861
          url: "https://pub.dev"
        source: hosted
        version: "0.12.19"
      material_color_utilities:
        dependency: transitive
        description:
          name: material_color_utilities
          sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b"
          url: "https://pub.dev"
        source: hosted
        version: "0.13.0"
      meta:
        dependency: transitive
        description:
          name: meta
          sha256: "1741988757a65eb6b36abe716829688cf01910bbf91c34354ff7ec1c3de2b349"
          url: "https://pub.dev"
        source: hosted
        version: "1.18.0"
      path:
        dependency: transitive
        description:
          name: path
          sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
          url: "https://pub.dev"
        source: hosted
        version: "1.9.1"
      path_parsing:
        dependency: transitive
        description:
          name: path_parsing
          sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca"
          url: "https://pub.dev"
        source: hosted
        version: "1.1.0"
      petitparser:
        dependency: transitive
        description:
          name: petitparser
          sha256: "91bd59303e9f769f108f8df05e371341b15d59e995e6806aefab827b58336675"
          url: "https://pub.dev"
        source: hosted
        version: "7.0.2"
      plugin_platform_interface:
        dependency: transitive
        description:
          name: plugin_platform_interface
          sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
          url: "https://pub.dev"
        source: hosted
        version: "2.1.8"
      sky_engine:
        dependency: transitive
        description: flutter
        source: sdk
        version: "0.0.0"
      source_span:
        dependency: transitive
        description:
          name: source_span
          sha256: "56a02f1f4cd1a2d96303c0144c93bd6d909eea6bee6bf5a0e0b685edbd4c47ab"
          url: "https://pub.dev"
        source: hosted
        version: "1.10.2"
      stack_trace:
        dependency: transitive
        description:
          name: stack_trace
          sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
          url: "https://pub.dev"
        source: hosted
        version: "1.12.1"
      stream_channel:
        dependency: transitive
        description:
          name: stream_channel
          sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
          url: "https://pub.dev"
        source: hosted
        version: "2.1.4"
      string_scanner:
        dependency: transitive
        description:
          name: string_scanner
          sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43"
          url: "https://pub.dev"
        source: hosted
        version: "1.4.1"
      term_glyph:
        dependency: transitive
        description:
          name: term_glyph
          sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e"
          url: "https://pub.dev"
        source: hosted
        version: "1.2.2"
      test_api:
        dependency: transitive
        description:
          name: test_api
          sha256: "949a932224383300f01be9221c39180316445ecb8e7547f70a41a35bf421fb9e"
          url: "https://pub.dev"
        source: hosted
        version: "0.7.11"
      typed_data:
        dependency: transitive
        description:
          name: typed_data
          sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
          url: "https://pub.dev"
        source: hosted
        version: "1.4.0"
      vector_graphics:
        dependency: transitive
        description:
          name: vector_graphics
          sha256: "2306c03da2ba81724afeb589c351ebbc0aa7d86005925be8f8735856dbe5e42d"
          url: "https://pub.dev"
        source: hosted
        version: "1.2.2"
      vector_graphics_codec:
        dependency: transitive
        description:
          name: vector_graphics_codec
          sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146"
          url: "https://pub.dev"
        source: hosted
        version: "1.1.13"
      vector_graphics_compiler:
        dependency: transitive
        description:
          name: vector_graphics_compiler
          sha256: "142a9146f447d15b10bdc00e21d5f4d83e5b32bb5f8f8f5a04c75311344923a3"
          url: "https://pub.dev"
        source: hosted
        version: "1.2.6"
      vector_math:
        dependency: transitive
        description:
          name: vector_math
          sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b
          url: "https://pub.dev"
        source: hosted
        version: "2.2.0"
      vm_service:
        dependency: transitive
        description:
          name: vm_service
          sha256: "0016aef94fc66495ac78af5859181e3f3bf2026bd8eecc72b9565601e19ab360"
          url: "https://pub.dev"
        source: hosted
        version: "15.2.0"
      web:
        dependency: transitive
        description:
          name: web
          sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
          url: "https://pub.dev"
        source: hosted
        version: "1.1.1"
      webview_all:
        dependency: "direct main"
        description:
          name: webview_all
          sha256: "618828779774dfc4cf726bbdcb323dd4b2482b81e7df2cb4218c5bb916369019"
          url: "https://pub.dev"
        source: hosted
        version: "1.2.1"
      webview_all_linux:
        dependency: transitive
        description:
          name: webview_all_linux
          sha256: "8303b57455ed4ac646102cbdb46a5f69c23cca0d1bd6e27adb76b5afc4dec679"
          url: "https://pub.dev"
        source: hosted
        version: "1.2.1"
      webview_all_ohos:
        dependency: transitive
        description:
          name: webview_all_ohos
          sha256: a5601f843d7d6fffc41ffe6946d435220496c755a72f1a4014cdbd614991d444
          url: "https://pub.dev"
        source: hosted
        version: "1.2.1"
      webview_all_web:
        dependency: transitive
        description:
          name: webview_all_web
          sha256: fd5d2a3f35a76e5e8e8819a9c41cf243a8bd875b1b3814798946f512c9b258fe
          url: "https://pub.dev"
        source: hosted
        version: "1.2.1"
      webview_all_windows:
        dependency: transitive
        description:
          name: webview_all_windows
          sha256: "95e7b0abdd893d4c2b186b21a2fb8a383a909044a10190e9d94b199cb0a6a46c"
          url: "https://pub.dev"
        source: hosted
        version: "1.2.1"
      webview_flutter_android:
        dependency: transitive
        description:
          name: webview_flutter_android
          sha256: a97db7a44f8e71af2f3971c45550a08cce1fb60059c1b8e534251e6cfb753490
          url: "https://pub.dev"
        source: hosted
        version: "4.13.0"
      webview_flutter_platform_interface:
        dependency: transitive
        description:
          name: webview_flutter_platform_interface
          sha256: "1221c1b12f5278791042f2ec2841743784cf25c5a644e23d6680e5d718824f04"
          url: "https://pub.dev"
        source: hosted
        version: "2.15.1"
      webview_flutter_wkwebview:
        dependency: transitive
        description:
          name: webview_flutter_wkwebview
          sha256: c879dd64b87c452aa84381b244d5469da57ba7e8cca6884c7b1e0d406372c12d
          url: "https://pub.dev"
        source: hosted
        version: "3.26.0"
      xml:
        dependency: transitive
        description:
          name: xml
          sha256: "67f0aff7be013d107995e9b75bf4e7f2c3ef2dfdb2c8e68024bba0a7fd5756a4"
          url: "https://pub.dev"
        source: hosted
        version: "7.0.1"
    sdks:
      dart: ">=3.12.0 <4.0.0"
      flutter: ">=3.44.0"
    
  5. removed
    waiting for responseThe Flutter team cannot make further progress on this issue until the original reporter responds
    on Jul 24, 2026
  6. saurabh-mirajkar commented on Jul 27, 2026

    @saurabh-mirajkar
    Contributor

    @osoftware Thanks for the additional details. I can reproduce this with the provided sample on the latest stable Flutter release. The issue is reproducible beyond Windows as well, so it doesn't appear to be platform-specific. Labelling and routing for further investigation.

    Code sample
    import 'package:flutter/material.dart';
    import 'package:flutter_svg/flutter_svg.dart';
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      const MyApp({super.key});
    
      @override
      Widget build(BuildContext context) {
        return MaterialApp(home: Homepage());
      }
    }
    
    class Homepage extends StatelessWidget {
      const Homepage({super.key});
    
      final svgString = '''
    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="400" height="100" font-family="Arial">
      <rect x="10" y="10" width="200" height="45" fill="gray" />
      <g id="outer" transform="translate(10,10)">
        <rect x="10" y="10" width="200" height="45" fill="blue" />
        <g id="inner" transform="translate(10,10)">
          <rect x="10" y="10" width="200" height="45" fill="green" />
          <text x="15" y="25">bare text</text>
          <text x="15" y="50"><tspan>text in tspan</tspan></text>
        </g>
      </g>
    </svg>
    ''';
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(title: Text('Test ')),
          body: Center(child: SvgPicture.string(svgString)),
        );
      }
    }
    
  7. added
    packageflutter/packages repository. See also p: labels.
    has reproducible stepsThe issue has been confirmed reproducible and is ready to work on
    p: flutter_svgThe Flutter SVG drawing packages
    and removed
    in triagePresently being triaged by the triage team
    on Jul 27, 2026
  8. mackings commented on Oct 5, 2026

    @mackings

    I'd like to work on this. The tspan has no x/y, so it keeps the group transform, but the parent text already applied that transform to its position. So it gets applied twice. I have a fix with a test and will open a PR.

  9. github-actions commented on Oct 29, 2026

    @github-actions

    This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of flutter doctor -v and a minimal reproduction of the issue.

  10. locked as resolved and limited conversation to collaborators on Oct 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    engineflutter/engine related. See also e: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onp: flutter_svgThe Flutter SVG drawing packagespackageflutter/packages repository. See also p: labels.team-engineOwned by Engine team

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions