|  | @@ -31,6 +31,12 @@ import { getDefaultAppState } from "../appState";
 | 
	
		
			
				|  |  |  import { MAX_DECIMALS_FOR_SVG_EXPORT, MIME_TYPES, SVG_NS } from "../constants";
 | 
	
		
			
				|  |  |  import { getStroke, StrokeOptions } from "perfect-freehand";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +// using a stronger invert (100% vs our regular 93%) and saturate
 | 
	
		
			
				|  |  | +// as a temp hack to make images in dark theme look closer to original
 | 
	
		
			
				|  |  | +// color scheme (it's still not quite there and the colors look slightly
 | 
	
		
			
				|  |  | +// desatured, alas...)
 | 
	
		
			
				|  |  | +const IMAGE_INVERT_FILTER = "invert(100%) hue-rotate(180deg) saturate(1.25)";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  const defaultAppState = getDefaultAppState();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  const isPendingImageElement = (
 | 
	
	
		
			
				|  | @@ -116,17 +122,14 @@ const generateElementCanvas = (
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    const rc = rough.canvas(canvas);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  // in dark theme, revert the image color filter
 | 
	
		
			
				|  |  |    if (
 | 
	
		
			
				|  |  |      sceneState.theme === "dark" &&
 | 
	
		
			
				|  |  |      isInitializedImageElement(element) &&
 | 
	
		
			
				|  |  |      !isPendingImageElement(element, sceneState) &&
 | 
	
		
			
				|  |  |      sceneState.imageCache.get(element.fileId)?.mimeType !== MIME_TYPES.svg
 | 
	
		
			
				|  |  |    ) {
 | 
	
		
			
				|  |  | -    // using a stronger invert (100% vs our regular 93%) and saturate
 | 
	
		
			
				|  |  | -    // as a temp hack to make images in dark theme look closer to original
 | 
	
		
			
				|  |  | -    // color scheme (it's still not quite there and the clors look slightly
 | 
	
		
			
				|  |  | -    // desaturing/black is not as black, but...)
 | 
	
		
			
				|  |  | -    context.filter = "invert(100%) hue-rotate(180deg) saturate(1.25)";
 | 
	
		
			
				|  |  | +    context.filter = IMAGE_INVERT_FILTER;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    drawElementOnCanvas(element, rc, context, sceneState);
 | 
	
	
		
			
				|  | @@ -744,6 +747,7 @@ export const renderElementToSvg = (
 | 
	
		
			
				|  |  |    files: BinaryFiles,
 | 
	
		
			
				|  |  |    offsetX?: number,
 | 
	
		
			
				|  |  |    offsetY?: number,
 | 
	
		
			
				|  |  | +  exportWithDarkMode?: boolean,
 | 
	
		
			
				|  |  |  ) => {
 | 
	
		
			
				|  |  |    const [x1, y1, x2, y2] = getElementAbsoluteCoords(element);
 | 
	
		
			
				|  |  |    const cx = (x2 - x1) / 2 - (element.x - x1);
 | 
	
	
		
			
				|  | @@ -861,6 +865,11 @@ export const renderElementToSvg = (
 | 
	
		
			
				|  |  |          const use = svgRoot.ownerDocument!.createElementNS(SVG_NS, "use");
 | 
	
		
			
				|  |  |          use.setAttribute("href", `#${symbolId}`);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        // in dark theme, revert the image color filter
 | 
	
		
			
				|  |  | +        if (exportWithDarkMode && fileData.mimeType !== MIME_TYPES.svg) {
 | 
	
		
			
				|  |  | +          use.setAttribute("filter", IMAGE_INVERT_FILTER);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          use.setAttribute("width", `${Math.round(element.width)}`);
 | 
	
		
			
				|  |  |          use.setAttribute("height", `${Math.round(element.height)}`);
 | 
	
		
			
				|  |  |  
 |