diff --git a/docs/releases/v2.12.2.md b/docs/releases/v2.12.2.md
new file mode 100644
index 0000000000000000000000000000000000000000..7cc2498301c6e6e4261778e2313c101d903d4091
--- /dev/null
+++ b/docs/releases/v2.12.2.md
@@ -0,0 +1,5 @@
+# v2.12.2
+
+## Bugfixes
+
+- fixes screenshot in fsaverage
diff --git a/mkdocs.yml b/mkdocs.yml
index 207b2580cd9132c87e0721534a3a192cbbfd4711..3b54fefc8324bbd99777bc67e61f5ec46d8865c2 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -33,6 +33,7 @@ nav:
     - Fetching datasets: 'advanced/datasets.md'
     - Display non-atlas volumes: 'advanced/otherVolumes.md'
   - Release notes:
+    - v2.12.2: 'releases/v2.12.2.md'
     - v2.12.1: 'releases/v2.12.1.md'
     - v2.12.0: 'releases/v2.12.0.md'
     - v2.11.4: 'releases/v2.11.4.md'
diff --git a/package.json b/package.json
index 5314a2daa6a1cc8d13088e24bd5568e42ab66b97..5746b8bb314805db1ef23fd255cbd2cfc2f07315 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "siibra-explorer",
-  "version": "2.12.1",
+  "version": "2.12.2",
   "description": "siibra-explorer - explore brain atlases. Based on humanbrainproject/nehuba & google/neuroglancer. Built with angular",
   "scripts": {
     "lint": "eslint src --ext .ts",
diff --git a/src/ui/ui.module.ts b/src/ui/ui.module.ts
index 2e083c87bbc17a268a43c2aba3cf1dd90acc5018..98efd3854b801b7cffe5d1720ffc32fab5ea32d7 100644
--- a/src/ui/ui.module.ts
+++ b/src/ui/ui.module.ts
@@ -40,11 +40,21 @@ import { HANDLE_SCREENSHOT_PROMISE, TypeHandleScrnShotPromise } from "../screens
     {
       provide: HANDLE_SCREENSHOT_PROMISE,
       useValue: ((param) => {
-        const canvas: HTMLCanvasElement = document.querySelector('#neuroglancer-container canvas')
+        const ngCanvas: HTMLCanvasElement = document.querySelector('#neuroglancer-container canvas')
+        const threeSurferCanvas: HTMLCanvasElement = document.querySelector('three-surfer-glue-cmp canvas')
+        
+        if (threeSurferCanvas) {
+          const tsViewer = window['tsViewer']
+          tsViewer.renderer.render(tsViewer.scene, tsViewer.camera)
+        }
+        if (ngCanvas) {
+          window['viewer'].display.draw()
+        }
+        const canvas = ngCanvas || threeSurferCanvas
         if (!canvas) {
-          return Promise.reject(`element '#neuroglancer-container canvas' not found`)
+          return Promise.reject(`element '#neuroglancer-container canvas' or 'three-surfer-glue-cmp canvas' not found`)
         }
-        (window as any).viewer.display.draw()
+        
         if (!param) {
           return new Promise(rs => {
             canvas.toBlob(blob => {
diff --git a/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.component.ts b/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.component.ts
index 522d54c51836e83527b2742b529f3f39a946fa26..4af773b7b571e4593de25ca779827c24b8ab8b6a 100644
--- a/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.component.ts
+++ b/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.component.ts
@@ -824,11 +824,13 @@ export class ThreeSurferGlueCmp implements IViewer<'threeSurfer'>, AfterViewInit
       () => this.domEl.removeEventListener((window as any).ThreeSurfer.CUSTOM_EVENTNAME_UPDATED, customEvHandler)
     )
     this.tsRef = new (window as any).ThreeSurfer(this.domEl, {highlightHovered: true})
+    window['tsViewer'] = this.tsRef
 
     this.onDestroyCb.push(
       () => {
         this.tsRef.dispose()
         this.tsRef = null
+        window['tsViewer'] = null
       }
     )
     this.tsRef.control.enablePan = false