CINXE.COM
paint.net blog
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="profile" href="http://gmpg.org/xfn/11"> <link rel="pingback" href="https://blog.getpaint.net/xmlrpc.php"> <title>paint.net blog</title> <meta name='robots' content='max-image-preview:large' /> <!-- Async WordPress.com Remote Login --> <script id="wpcom_remote_login_js"> var wpcom_remote_login_extra_auth = ''; function wpcom_remote_login_remove_dom_node_id( element_id ) { var dom_node = document.getElementById( element_id ); if ( dom_node ) { dom_node.parentNode.removeChild( dom_node ); } } function wpcom_remote_login_remove_dom_node_classes( class_name ) { var dom_nodes = document.querySelectorAll( '.' + class_name ); for ( var i = 0; i < dom_nodes.length; i++ ) { dom_nodes[ i ].parentNode.removeChild( dom_nodes[ i ] ); } } function wpcom_remote_login_final_cleanup() { wpcom_remote_login_remove_dom_node_classes( "wpcom_remote_login_msg" ); wpcom_remote_login_remove_dom_node_id( "wpcom_remote_login_key" ); wpcom_remote_login_remove_dom_node_id( "wpcom_remote_login_validate" ); wpcom_remote_login_remove_dom_node_id( "wpcom_remote_login_js" ); wpcom_remote_login_remove_dom_node_id( "wpcom_request_access_iframe" ); wpcom_remote_login_remove_dom_node_id( "wpcom_request_access_styles" ); } // Watch for messages back from the remote login window.addEventListener( "message", function( e ) { if ( e.origin === "https://r-login.wordpress.com" ) { var data = {}; try { data = JSON.parse( e.data ); } catch( e ) { wpcom_remote_login_final_cleanup(); return; } if ( data.msg === 'LOGIN' ) { // Clean up the login check iframe wpcom_remote_login_remove_dom_node_id( "wpcom_remote_login_key" ); var id_regex = new RegExp( /^[0-9]+$/ ); var token_regex = new RegExp( /^.*|.*|.*$/ ); if ( token_regex.test( data.token ) && id_regex.test( data.wpcomid ) ) { // We have everything we need to ask for a login var script = document.createElement( "script" ); script.setAttribute( "id", "wpcom_remote_login_validate" ); script.src = '/remote-login.php?wpcom_remote_login=validate' + '&wpcomid=' + data.wpcomid + '&token=' + encodeURIComponent( data.token ) + '&host=' + window.location.protocol + '//' + window.location.hostname + '&postid=1187' + '&is_singular='; document.body.appendChild( script ); } return; } // Safari ITP, not logged in, so redirect if ( data.msg === 'LOGIN-REDIRECT' ) { window.location = 'https://wordpress.com/log-in?redirect_to=' + window.location.href; return; } // Safari ITP, storage access failed, remove the request if ( data.msg === 'LOGIN-REMOVE' ) { var css_zap = 'html { -webkit-transition: margin-top 1s; transition: margin-top 1s; } /* 9001 */ html { margin-top: 0 !important; } * html body { margin-top: 0 !important; } @media screen and ( max-width: 782px ) { html { margin-top: 0 !important; } * html body { margin-top: 0 !important; } }'; var style_zap = document.createElement( 'style' ); style_zap.type = 'text/css'; style_zap.appendChild( document.createTextNode( css_zap ) ); document.body.appendChild( style_zap ); var e = document.getElementById( 'wpcom_request_access_iframe' ); e.parentNode.removeChild( e ); document.cookie = 'wordpress_com_login_access=denied; path=/; max-age=31536000'; return; } // Safari ITP if ( data.msg === 'REQUEST_ACCESS' ) { console.log( 'request access: safari' ); // Check ITP iframe enable/disable knob if ( wpcom_remote_login_extra_auth !== 'safari_itp_iframe' ) { return; } // If we are in a "private window" there is no ITP. var private_window = false; try { var opendb = window.openDatabase( null, null, null, null ); } catch( e ) { private_window = true; } if ( private_window ) { console.log( 'private window' ); return; } var iframe = document.createElement( 'iframe' ); iframe.id = 'wpcom_request_access_iframe'; iframe.setAttribute( 'scrolling', 'no' ); iframe.setAttribute( 'sandbox', 'allow-storage-access-by-user-activation allow-scripts allow-same-origin allow-top-navigation-by-user-activation' ); iframe.src = 'https://r-login.wordpress.com/remote-login.php?wpcom_remote_login=request_access&origin=' + encodeURIComponent( data.origin ) + '&wpcomid=' + encodeURIComponent( data.wpcomid ); var css = 'html { -webkit-transition: margin-top 1s; transition: margin-top 1s; } /* 9001 */ html { margin-top: 46px !important; } * html body { margin-top: 46px !important; } @media screen and ( max-width: 660px ) { html { margin-top: 71px !important; } * html body { margin-top: 71px !important; } #wpcom_request_access_iframe { display: block; height: 71px !important; } } #wpcom_request_access_iframe { border: 0px; height: 46px; position: fixed; top: 0; left: 0; width: 100%; min-width: 100%; z-index: 99999; background: #23282d; } '; var style = document.createElement( 'style' ); style.type = 'text/css'; style.id = 'wpcom_request_access_styles'; style.appendChild( document.createTextNode( css ) ); document.body.appendChild( style ); document.body.appendChild( iframe ); } if ( data.msg === 'DONE' ) { wpcom_remote_login_final_cleanup(); } } }, false ); // Inject the remote login iframe after the page has had a chance to load // more critical resources window.addEventListener( "DOMContentLoaded", function( e ) { var iframe = document.createElement( "iframe" ); iframe.style.display = "none"; iframe.setAttribute( "scrolling", "no" ); iframe.setAttribute( "id", "wpcom_remote_login_key" ); iframe.src = "https://r-login.wordpress.com/remote-login.php" + "?wpcom_remote_login=key" + "&origin=aHR0cHM6Ly9ibG9nLmdldHBhaW50Lm5ldA%3D%3D" + "&wpcomid=12948295" + "&time=1733205085"; document.body.appendChild( iframe ); }, false ); </script> <link rel='dns-prefetch' href='//s1.wp.com' /> <link rel='dns-prefetch' href='//s2.wp.com' /> <link rel='dns-prefetch' href='//s0.wp.com' /> <link rel='dns-prefetch' href='//fonts-api.wp.com' /> <link rel='dns-prefetch' href='//s.pubmine.com' /> <link rel='dns-prefetch' href='//x.bidswitch.net' /> <link rel='dns-prefetch' href='//static.criteo.net' /> <link rel='dns-prefetch' href='//ib.adnxs.com' /> <link rel='dns-prefetch' href='//aax.amazon-adsystem.com' /> <link rel='dns-prefetch' href='//bidder.criteo.com' /> <link rel='dns-prefetch' href='//cas.criteo.com' /> <link rel='dns-prefetch' href='//gum.criteo.com' /> <link rel='dns-prefetch' href='//ads.pubmatic.com' /> <link rel='dns-prefetch' href='//gads.pubmatic.com' /> <link rel='dns-prefetch' href='//tpc.googlesyndication.com' /> <link rel='dns-prefetch' href='//ad.doubleclick.net' /> <link rel='dns-prefetch' href='//googleads.g.doubleclick.net' /> <link rel='dns-prefetch' href='//www.googletagservices.com' /> <link rel='dns-prefetch' href='//cdn.switchadhub.com' /> <link rel='dns-prefetch' href='//delivery.g.switchadhub.com' /> <link rel='dns-prefetch' href='//delivery.swid.switchadhub.com' /> <link rel='dns-prefetch' href='//a.teads.tv' /> <link rel='dns-prefetch' href='//prebid.media.net' /> <link rel='dns-prefetch' href='//adserver-us.adtech.advertising.com' /> <link rel='dns-prefetch' href='//fastlane.rubiconproject.com' /> <link rel='dns-prefetch' href='//prebid-server.rubiconproject.com' /> <link rel='dns-prefetch' href='//hb-api.omnitagjs.com' /> <link rel='dns-prefetch' href='//mtrx.go.sonobi.com' /> <link rel='dns-prefetch' href='//apex.go.sonobi.com' /> <link rel='dns-prefetch' href='//u.openx.net' /> <link rel="alternate" type="application/rss+xml" title="paint.net blog » Feed" href="https://blog.getpaint.net/feed/" /> <link rel="alternate" type="application/rss+xml" title="paint.net blog » Comments Feed" href="https://blog.getpaint.net/comments/feed/" /> <script type="text/javascript"> /* <![CDATA[ */ function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != 'function') { window.onload = func; } else { window.onload = function () { oldonload(); func(); } } } /* ]]> */ </script> <script type="text/javascript"> /* <![CDATA[ */ window._wpemojiSettings = {"baseUrl":"https:\/\/s0.wp.com\/wp-content\/mu-plugins\/wpcom-smileys\/twemoji\/2\/72x72\/","ext":".png","svgUrl":"https:\/\/s0.wp.com\/wp-content\/mu-plugins\/wpcom-smileys\/twemoji\/2\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/s2.wp.com\/wp-includes\/js\/wp-emoji-release.min.js?m=1719498190i&ver=6.8-alpha-59438"}}; /*! This file is auto-generated */ !function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings); /* ]]> */ </script> <link crossorigin='anonymous' rel='stylesheet' id='all-css-0-1' href='https://s0.wp.com/_static/??-eJx9jEEOwiAQRS8kTlm0cWM8C4WR0A4M6QwhvX1rotGVy5f//oNejeeiWBRm4mgqtZiKQOctuCAQiWdHVy9ygR83t6+ZQkQVwHauvCY05Doo5kpOUUB0J/wXWFCr8+ubQVqBzKHR+U3lmUpSNOI3Jvrw/so98t1Ot9HacZiG5QApwUsK&cssminify=yes' type='text/css' media='all' /> <style id='wp-emoji-styles-inline-css'> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link crossorigin='anonymous' rel='stylesheet' id='all-css-2-1' href='https://s2.wp.com/_static/??-eJydzEEOwiAQheELCWNrFV0YzwKUkKkIZGbQcPtWN+5cuHx5+X54VeVLlpAFamoRM0Ns23SB4vZQgOdw0UbvwTVMM7hU/F0ldGSpA0tPQXvmHfwMfRTDEqTaN7e9NFGRcP43QVYwR/7y2+M6mMN4NNP5NC4rOVVP3w==&cssminify=yes' type='text/css' media='all' /> <style id='wp-block-library-inline-css'> .has-text-align-justify { text-align:justify; } .has-text-align-justify{text-align:justify;} </style> <link crossorigin='anonymous' rel='stylesheet' id='all-css-4-1' href='https://s2.wp.com/_static/??-eJzTLy/QzcxLzilNSS3WzyrWz01NyUxMzUnNTc0rQeEU5CRWphbp5qSmJyZX6uVm5uklFxfr6OPTDpRD5sM02efaGpoZmFkYGRuZGmQBAHPvL0Y=&cssminify=yes' type='text/css' media='all' /> <style id='jetpack-sharing-buttons-style-inline-css'> .jetpack-sharing-buttons__services-list{display:flex;flex-direction:row;flex-wrap:wrap;gap:0;list-style-type:none;margin:5px;padding:0}.jetpack-sharing-buttons__services-list.has-small-icon-size{font-size:12px}.jetpack-sharing-buttons__services-list.has-normal-icon-size{font-size:16px}.jetpack-sharing-buttons__services-list.has-large-icon-size{font-size:24px}.jetpack-sharing-buttons__services-list.has-huge-icon-size{font-size:36px}@media print{.jetpack-sharing-buttons__services-list{display:none!important}}.editor-styles-wrapper .wp-block-jetpack-sharing-buttons{gap:0;padding-inline-start:0}ul.jetpack-sharing-buttons__services-list.has-background{padding:1.25em 2.375em} </style> <link crossorigin='anonymous' rel='stylesheet' id='all-css-6-1' href='https://s2.wp.com/wp-content/plugins/coblocks/2.18.1-simple-rev.4/dist/coblocks-style.css?m=1681832297i&cssminify=yes' type='text/css' media='all' /> <style id='classic-theme-styles-inline-css'> /*! This file is auto-generated */ .wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} </style> <link crossorigin='anonymous' rel='stylesheet' id='all-css-8-1' href='https://s1.wp.com/_static/??/wp-content/mu-plugins/core-compat/wp-mediaelement.css,/wp-content/mu-plugins/wpcom-bbpress-premium-themes.css?m=1432920480j&cssminify=yes' type='text/css' media='all' /> <style id='global-styles-inline-css'> :root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--font-family--albert-sans: 'Albert Sans', sans-serif;--wp--preset--font-family--alegreya: Alegreya, serif;--wp--preset--font-family--arvo: Arvo, serif;--wp--preset--font-family--bodoni-moda: 'Bodoni Moda', serif;--wp--preset--font-family--bricolage-grotesque: 'Bricolage Grotesque', sans-serif;--wp--preset--font-family--cabin: Cabin, sans-serif;--wp--preset--font-family--chivo: Chivo, sans-serif;--wp--preset--font-family--commissioner: Commissioner, sans-serif;--wp--preset--font-family--cormorant: Cormorant, serif;--wp--preset--font-family--courier-prime: 'Courier Prime', monospace;--wp--preset--font-family--crimson-pro: 'Crimson Pro', serif;--wp--preset--font-family--dm-mono: 'DM Mono', monospace;--wp--preset--font-family--dm-sans: 'DM Sans', sans-serif;--wp--preset--font-family--dm-serif-display: 'DM Serif Display', serif;--wp--preset--font-family--domine: Domine, serif;--wp--preset--font-family--eb-garamond: 'EB Garamond', serif;--wp--preset--font-family--epilogue: Epilogue, sans-serif;--wp--preset--font-family--fahkwang: Fahkwang, sans-serif;--wp--preset--font-family--figtree: Figtree, sans-serif;--wp--preset--font-family--fira-sans: 'Fira Sans', sans-serif;--wp--preset--font-family--fjalla-one: 'Fjalla One', sans-serif;--wp--preset--font-family--fraunces: Fraunces, serif;--wp--preset--font-family--gabarito: Gabarito, system-ui;--wp--preset--font-family--ibm-plex-mono: 'IBM Plex Mono', monospace;--wp--preset--font-family--ibm-plex-sans: 'IBM Plex Sans', sans-serif;--wp--preset--font-family--ibarra-real-nova: 'Ibarra Real Nova', serif;--wp--preset--font-family--instrument-serif: 'Instrument Serif', serif;--wp--preset--font-family--inter: Inter, sans-serif;--wp--preset--font-family--josefin-sans: 'Josefin Sans', sans-serif;--wp--preset--font-family--jost: Jost, sans-serif;--wp--preset--font-family--libre-baskerville: 'Libre Baskerville', serif;--wp--preset--font-family--libre-franklin: 'Libre Franklin', sans-serif;--wp--preset--font-family--literata: Literata, serif;--wp--preset--font-family--lora: Lora, serif;--wp--preset--font-family--merriweather: Merriweather, serif;--wp--preset--font-family--montserrat: Montserrat, sans-serif;--wp--preset--font-family--newsreader: Newsreader, serif;--wp--preset--font-family--noto-sans-mono: 'Noto Sans Mono', sans-serif;--wp--preset--font-family--nunito: Nunito, sans-serif;--wp--preset--font-family--open-sans: 'Open Sans', sans-serif;--wp--preset--font-family--overpass: Overpass, sans-serif;--wp--preset--font-family--pt-serif: 'PT Serif', serif;--wp--preset--font-family--petrona: Petrona, serif;--wp--preset--font-family--piazzolla: Piazzolla, serif;--wp--preset--font-family--playfair-display: 'Playfair Display', serif;--wp--preset--font-family--plus-jakarta-sans: 'Plus Jakarta Sans', sans-serif;--wp--preset--font-family--poppins: Poppins, sans-serif;--wp--preset--font-family--raleway: Raleway, sans-serif;--wp--preset--font-family--roboto: Roboto, sans-serif;--wp--preset--font-family--roboto-slab: 'Roboto Slab', serif;--wp--preset--font-family--rubik: Rubik, sans-serif;--wp--preset--font-family--rufina: Rufina, serif;--wp--preset--font-family--sora: Sora, sans-serif;--wp--preset--font-family--source-sans-3: 'Source Sans 3', sans-serif;--wp--preset--font-family--source-serif-4: 'Source Serif 4', serif;--wp--preset--font-family--space-mono: 'Space Mono', monospace;--wp--preset--font-family--syne: Syne, sans-serif;--wp--preset--font-family--texturina: Texturina, serif;--wp--preset--font-family--urbanist: Urbanist, sans-serif;--wp--preset--font-family--work-sans: 'Work Sans', sans-serif;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}.has-albert-sans-font-family{font-family: var(--wp--preset--font-family--albert-sans) !important;}.has-alegreya-font-family{font-family: var(--wp--preset--font-family--alegreya) !important;}.has-arvo-font-family{font-family: var(--wp--preset--font-family--arvo) !important;}.has-bodoni-moda-font-family{font-family: var(--wp--preset--font-family--bodoni-moda) !important;}.has-bricolage-grotesque-font-family{font-family: var(--wp--preset--font-family--bricolage-grotesque) !important;}.has-cabin-font-family{font-family: var(--wp--preset--font-family--cabin) !important;}.has-chivo-font-family{font-family: var(--wp--preset--font-family--chivo) !important;}.has-commissioner-font-family{font-family: var(--wp--preset--font-family--commissioner) !important;}.has-cormorant-font-family{font-family: var(--wp--preset--font-family--cormorant) !important;}.has-courier-prime-font-family{font-family: var(--wp--preset--font-family--courier-prime) !important;}.has-crimson-pro-font-family{font-family: var(--wp--preset--font-family--crimson-pro) !important;}.has-dm-mono-font-family{font-family: var(--wp--preset--font-family--dm-mono) !important;}.has-dm-sans-font-family{font-family: var(--wp--preset--font-family--dm-sans) !important;}.has-dm-serif-display-font-family{font-family: var(--wp--preset--font-family--dm-serif-display) !important;}.has-domine-font-family{font-family: var(--wp--preset--font-family--domine) !important;}.has-eb-garamond-font-family{font-family: var(--wp--preset--font-family--eb-garamond) !important;}.has-epilogue-font-family{font-family: var(--wp--preset--font-family--epilogue) !important;}.has-fahkwang-font-family{font-family: var(--wp--preset--font-family--fahkwang) !important;}.has-figtree-font-family{font-family: var(--wp--preset--font-family--figtree) !important;}.has-fira-sans-font-family{font-family: var(--wp--preset--font-family--fira-sans) !important;}.has-fjalla-one-font-family{font-family: var(--wp--preset--font-family--fjalla-one) !important;}.has-fraunces-font-family{font-family: var(--wp--preset--font-family--fraunces) !important;}.has-gabarito-font-family{font-family: var(--wp--preset--font-family--gabarito) !important;}.has-ibm-plex-mono-font-family{font-family: var(--wp--preset--font-family--ibm-plex-mono) !important;}.has-ibm-plex-sans-font-family{font-family: var(--wp--preset--font-family--ibm-plex-sans) !important;}.has-ibarra-real-nova-font-family{font-family: var(--wp--preset--font-family--ibarra-real-nova) !important;}.has-instrument-serif-font-family{font-family: var(--wp--preset--font-family--instrument-serif) !important;}.has-inter-font-family{font-family: var(--wp--preset--font-family--inter) !important;}.has-josefin-sans-font-family{font-family: var(--wp--preset--font-family--josefin-sans) !important;}.has-jost-font-family{font-family: var(--wp--preset--font-family--jost) !important;}.has-libre-baskerville-font-family{font-family: var(--wp--preset--font-family--libre-baskerville) !important;}.has-libre-franklin-font-family{font-family: var(--wp--preset--font-family--libre-franklin) !important;}.has-literata-font-family{font-family: var(--wp--preset--font-family--literata) !important;}.has-lora-font-family{font-family: var(--wp--preset--font-family--lora) !important;}.has-merriweather-font-family{font-family: var(--wp--preset--font-family--merriweather) !important;}.has-montserrat-font-family{font-family: var(--wp--preset--font-family--montserrat) !important;}.has-newsreader-font-family{font-family: var(--wp--preset--font-family--newsreader) !important;}.has-noto-sans-mono-font-family{font-family: var(--wp--preset--font-family--noto-sans-mono) !important;}.has-nunito-font-family{font-family: var(--wp--preset--font-family--nunito) !important;}.has-open-sans-font-family{font-family: var(--wp--preset--font-family--open-sans) !important;}.has-overpass-font-family{font-family: var(--wp--preset--font-family--overpass) !important;}.has-pt-serif-font-family{font-family: var(--wp--preset--font-family--pt-serif) !important;}.has-petrona-font-family{font-family: var(--wp--preset--font-family--petrona) !important;}.has-piazzolla-font-family{font-family: var(--wp--preset--font-family--piazzolla) !important;}.has-playfair-display-font-family{font-family: var(--wp--preset--font-family--playfair-display) !important;}.has-plus-jakarta-sans-font-family{font-family: var(--wp--preset--font-family--plus-jakarta-sans) !important;}.has-poppins-font-family{font-family: var(--wp--preset--font-family--poppins) !important;}.has-raleway-font-family{font-family: var(--wp--preset--font-family--raleway) !important;}.has-roboto-font-family{font-family: var(--wp--preset--font-family--roboto) !important;}.has-roboto-slab-font-family{font-family: var(--wp--preset--font-family--roboto-slab) !important;}.has-rubik-font-family{font-family: var(--wp--preset--font-family--rubik) !important;}.has-rufina-font-family{font-family: var(--wp--preset--font-family--rufina) !important;}.has-sora-font-family{font-family: var(--wp--preset--font-family--sora) !important;}.has-source-sans-3-font-family{font-family: var(--wp--preset--font-family--source-sans-3) !important;}.has-source-serif-4-font-family{font-family: var(--wp--preset--font-family--source-serif-4) !important;}.has-space-mono-font-family{font-family: var(--wp--preset--font-family--space-mono) !important;}.has-syne-font-family{font-family: var(--wp--preset--font-family--syne) !important;}.has-texturina-font-family{font-family: var(--wp--preset--font-family--texturina) !important;}.has-urbanist-font-family{font-family: var(--wp--preset--font-family--urbanist) !important;}.has-work-sans-font-family{font-family: var(--wp--preset--font-family--work-sans) !important;} :where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;} :root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;} :where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;} </style> <link rel='stylesheet' id='sela-fonts-css' href='https://fonts-api.wp.com/css?family=Source+Sans+Pro%3A300%2C300italic%2C400%2C400italic%2C600%7CDroid+Serif%3A400%2C400italic%7COswald%3A300%2C400&subset=latin%2Clatin-ext' media='all' /> <link crossorigin='anonymous' rel='stylesheet' id='all-css-12-1' href='https://s1.wp.com/_static/??-eJyFjssOAiEMRX9IbND4Whg/xTBNRUYohEIm/r2McYHR6O7e5JzbwpQURi7EBUJVyVfrWGCkkgzeXh2kMpwdI1hiyq4J8j0uUWQB3Wa5UiCBVAcQ8gak3D39peZTT1JNCWP44LtPMw0+2hYtNKqrvyRLUfmIprjIb0VdvHF5Vk/hqLf7jdar9WE3PgDfam4x&cssminify=yes' type='text/css' media='all' /> <style id='sela-style-inline-css'> .site-branding { background-image: url(https://blog.getpaint.net/wp-content/uploads/2019/02/blog-header-2019-1.png); } </style> <link crossorigin='anonymous' rel='stylesheet' id='print-css-13-1' href='https://s1.wp.com/wp-content/mu-plugins/global-print/global-print.css?m=1465851035i&cssminify=yes' type='text/css' media='print' /> <style id='jetpack-global-styles-frontend-style-inline-css'> :root { --font-headings: unset; --font-base: unset; --font-headings-default: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif; --font-base-default: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;} </style> <link crossorigin='anonymous' rel='stylesheet' id='all-css-16-1' href='https://s2.wp.com/wp-content/themes/h4/global.css?m=1420737423i&cssminify=yes' type='text/css' media='all' /> <script type="text/javascript" id="wpcom-actionbar-placeholder-js-extra"> /* <![CDATA[ */ var actionbardata = {"siteID":"12948295","postID":"0","siteURL":"https:\/\/blog.getpaint.net","xhrURL":"https:\/\/blog.getpaint.net\/wp-admin\/admin-ajax.php","nonce":"1de37dcfd8","isLoggedIn":"","statusMessage":"","subsEmailDefault":"instantly","proxyScriptUrl":"https:\/\/s0.wp.com\/wp-content\/js\/wpcom-proxy-request.js?ver=20211021","i18n":{"followedText":"New posts from this site will now appear in your <a href=\"https:\/\/wordpress.com\/read\">Reader<\/a>","foldBar":"Collapse this bar","unfoldBar":"Expand this bar"}}; /* ]]> */ </script> <script type="text/javascript" id="jetpack-mu-wpcom-settings-js-before"> /* <![CDATA[ */ var JETPACK_MU_WPCOM_SETTINGS = {"assetsUrl":"https:\/\/s1.wp.com\/wp-content\/mu-plugins\/jetpack-mu-wpcom-plugin\/sun\/vendor\/automattic\/jetpack-mu-wpcom\/src\/build\/"}; /* ]]> */ </script> <script crossorigin='anonymous' type='text/javascript' src='https://s1.wp.com/_static/??-eJyFjcsOwiAQRX/I6dSa+lgYvwWBEAgMOAPW/n3bqIk7V2dxT87FqYDOVC1VDIIcKxTOr7kLssN186RjM1a2MTya5fmDLnn6K0HyjlW1v/L37R6zgxKb8yQ4ZTbKCOioRN4hnQo+hw1AmcCZwmvilq7709CPh/54voQFmNpFWg=='></script> <script type="text/javascript" id="rlt-proxy-js-after"> /* <![CDATA[ */ rltInitialize( {"token":null,"iframeOrigins":["https:\/\/widgets.wp.com"]} ); /* ]]> */ </script> <link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://rickbrewster.wordpress.com/xmlrpc.php?rsd" /> <meta name="generator" content="WordPress.com" /> <link rel='shortlink' href='https://wp.me/Skrt' /> <!-- Jetpack Open Graph Tags --> <meta property="og:type" content="website" /> <meta property="og:title" content="paint.net blog" /> <meta property="og:url" content="https://blog.getpaint.net/" /> <meta property="og:site_name" content="paint.net blog" /> <meta property="og:image" content="https://blog.getpaint.net/wp-content/uploads/2019/02/paintdotnet.256.png?w=200" /> <meta property="og:image:width" content="200" /> <meta property="og:image:height" content="200" /> <meta property="og:image:alt" content="" /> <meta property="og:locale" content="en_US" /> <!-- End Jetpack Open Graph Tags --> <link rel='openid.server' href='https://blog.getpaint.net/?openidserver=1' /> <link rel='openid.delegate' href='https://blog.getpaint.net/' /> <link rel="search" type="application/opensearchdescription+xml" href="https://blog.getpaint.net/osd.xml" title="paint.net blog" /> <link rel="search" type="application/opensearchdescription+xml" href="https://s1.wp.com/opensearch.xml" title="WordPress.com" /> <meta name="theme-color" content="#f0f0f0" /> <style type="text/css">.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}</style> <style type="text/css"> .recentcomments a { display: inline !important; padding: 0 !important; margin: 0 !important; } table.recentcommentsavatartop img.avatar, table.recentcommentsavatarend img.avatar { border: 0px; margin: 0; } table.recentcommentsavatartop a, table.recentcommentsavatarend a { border: 0px !important; background-color: transparent !important; } td.recentcommentsavatarend, td.recentcommentsavatartop { padding: 0px 0px 1px 0px; margin: 0px; } td.recentcommentstextend { border: none !important; padding: 0px 0px 2px 10px; } .rtl td.recentcommentstextend { padding: 0px 10px 2px 0px; } td.recentcommentstexttop { border: none; padding: 0px 0px 0px 10px; } .rtl td.recentcommentstexttop { padding: 0px 10px 0px 0px; } </style> <meta name="application-name" content="paint.net blog" /><meta name="msapplication-window" content="width=device-width;height=device-height" /><style type="text/css" id="custom-background-css"> body.custom-background { background-color: #f0f0f0; } </style> <script type="text/javascript"> /* <![CDATA[ */ var wa_smart = { 'network_id': 3905, 'site_id': 474853, 'page_id': 1572546, 'blog_id': 12948295, 'post_id': null, 'theme': 'pub/sela', 'target': 'wp_blog_id=12948295;language=en', '_': { 'title': 'Advertisement', 'privacy_settings': 'Privacy Settings' }, 'top': { 'enabled': false, 'adflow_enabled': true, 'format_id': 135099 }, 'inline': { 'enabled': false, 'adflow_enabled': true, 'format_id': 110354, 'max_slots': 20, 'max_blaze_slots': 20 }, 'belowpost': { 'enabled': false, 'adflow_enabled': true, 'format_id': 134071 }, 'bottom_sticky': { 'enabled': false, 'adflow_enabled': true, 'format_id': 117571 }, 'sidebar': { 'enabled': false, 'adflow_enabled': true, 'format_id': 134686 }, 'sidebar_sticky_right': { 'enabled': false, 'adflow_enabled': true, 'format_id': 135281 }, 'gutenberg_rectangle': { 'enabled': false, 'adflow_enabled': true, 'format_id': 134788 }, 'gutenberg_leaderboard': { 'enabled': false, 'adflow_enabled': true, 'format_id': 135073 }, 'gutenberg_mobile_leaderboard': { 'enabled': false, 'adflow_enabled': true, 'format_id': 135098 }, 'gutenberg_skyscraper': { 'enabled': false, 'adflow_enabled': true, 'format_id': 135088 } }; wa_smart.cmd = []; /* ]]> */ </script> <script type="text/javascript"> function __ATA_CC() {var v = document.cookie.match('(^|;) ?personalized-ads-consent=([^;]*)(;|$)');return v ? 1 : 0;} var __ATA_PP = { 'pt': 0, 'ht': 0, 'tn': 'sela', 'uloggedin': 0, 'amp': false, 'consent': __ATA_CC(), 'gdpr_applies': false, 'ad': { 'label': { 'text': 'Advertisements' }, 'reportAd': { 'text': 'Report this ad' } }, 'disabled_slot_formats': [], 'siteid': 8982, 'blogid': 12948295 }; var __ATA = __ATA || {}; __ATA.cmd = __ATA.cmd || []; __ATA.criteo = __ATA.criteo || {}; __ATA.criteo.cmd = __ATA.criteo.cmd || []; </script> <script type="text/javascript"> (function(){var g=Date.now||function(){return+new Date};function h(a,b){a:{for(var c=a.length,d="string"==typeof a?a.split(""):a,e=0;e<c;e++)if(e in d&&b.call(void 0,d[e],e,a)){b=e;break a}b=-1}return 0>b?null:"string"==typeof a?a.charAt(b):a[b]};function k(a,b,c){c=null!=c?"="+encodeURIComponent(String(c)):"";if(b+=c){c=a.indexOf("#");0>c&&(c=a.length);var d=a.indexOf("?");if(0>d||d>c){d=c;var e=""}else e=a.substring(d+1,c);a=[a.substr(0,d),e,a.substr(c)];c=a[1];a[1]=b?c?c+"&"+b:b:c;a=a[0]+(a[1]?"?"+a[1]:"")+a[2]}return a};var l=0;function m(a,b){var c=document.createElement("script");c.src=a;c.onload=function(){b&&b(void 0)};c.onerror=function(){b&&b("error")};a=document.getElementsByTagName("head");var d;a&&0!==a.length?d=a[0]:d=document.documentElement;d.appendChild(c)}function n(a){var b=void 0===b?document.cookie:b;return(b=h(b.split("; "),function(c){return-1!=c.indexOf(a+"=")}))?b.split("=")[1]:""}function p(a){return"string"==typeof a&&0<a.length} function r(a,b,c){b=void 0===b?"":b;c=void 0===c?".":c;var d=[];Object.keys(a).forEach(function(e){var f=a[e],q=typeof f;"object"==q&&null!=f||"function"==q?d.push(r(f,b+e+c)):null!==f&&void 0!==f&&(e=encodeURIComponent(b+e),d.push(e+"="+encodeURIComponent(f)))});return d.filter(p).join("&")}function t(a,b){a||((window.__ATA||{}).config=b.c,m(b.url))}var u=Math.floor(1E13*Math.random()),v=window.__ATA||{};window.__ATA=v;window.__ATA.cmd=v.cmd||[];v.rid=u;v.createdAt=g();var w=window.__ATA||{},x="s.pubmine.com"; w&&w.serverDomain&&(x=w.serverDomain);var y="//"+x+"/conf",z=window.top===window,A=window.__ATA_PP&&window.__ATA_PP.gdpr_applies,B="boolean"===typeof A?Number(A):null,C=window.__ATA_PP||null,D=z?document.referrer?document.referrer:null:null,E=z?window.location.href:document.referrer?document.referrer:null,F,G=n("__ATA_tuuid");F=G?G:null;var H=window.innerWidth+"x"+window.innerHeight,I=n("usprivacy"),J=r({gdpr:B,pp:C,rid:u,src:D,ref:E,tuuid:F,vp:H,us_privacy:I?I:null},"","."); (function(a){var b=void 0===b?"cb":b;l++;var c="callback__"+g().toString(36)+"_"+l.toString(36);a=k(a,b,c);window[c]=function(d){t(void 0,d)};m(a,function(d){d&&t(d)})})(y+"?"+J);}).call(this); </script> <script> var sas_fallback = sas_fallback || []; sas_fallback.push( { tag: "<div id="atatags-26942-{{unique_id}}"></div><script>__ATA.cmd.push(function() {__ATA.initDynamicSlot({id: \'atatags-26942-{{unique_id}}\',location: 120,formFactor: \'001\',label: {text: \'Advertisements\',},creative: {reportAd: {text: \'Report this ad\',},privacySettings: {text: \'Privacy\',}}});});</script>", type: 'belowpost' }, { tag: "<div id="atatags-26942-{{unique_id}}"></div><script>__ATA.cmd.push(function() {__ATA.initDynamicSlot({id: \'atatags-26942-{{unique_id}}\',location: 310,formFactor: \'001\',label: {text: \'Advertisements\',},creative: {reportAd: {text: \'Report this ad\',},privacySettings: {text: \'Privacy\',}}});});</script>", type: 'inline' }, { tag: "<div id="atatags-26942-{{unique_id}}"></div><script>__ATA.cmd.push(function() {__ATA.initDynamicSlot({id: \'atatags-26942-{{unique_id}}\',location: 140,formFactor: \'003\',label: {text: \'Advertisements\',},creative: {reportAd: {text: \'Report this ad\',},privacySettings: {text: \'Privacy\',}}});});</script>", type: 'sidebar' }, { tag: "<div id="atatags-26942-{{unique_id}}"></div><script>__ATA.cmd.push(function() {__ATA.initDynamicSlot({id: \'atatags-26942-{{unique_id}}\',location: 110,formFactor: \'002\',label: {text: \'Advertisements\',},creative: {reportAd: {text: \'Report this ad\',},privacySettings: {text: \'Privacy\',}}});});</script>", type: 'top' } ); </script> <script type="text/javascript"> window.doNotSellCallback = function() { var linkElements = [ 'a[href="https://wordpress.com/?ref=footer_blog"]', 'a[href="https://wordpress.com/?ref=footer_website"]', 'a[href="https://wordpress.com/?ref=vertical_footer"]', 'a[href^="https://wordpress.com/?ref=footer_segment_"]', ].join(','); var dnsLink = document.createElement( 'a' ); dnsLink.href = 'https://wordpress.com/advertising-program-optout/'; dnsLink.classList.add( 'do-not-sell-link' ); dnsLink.rel = 'nofollow'; dnsLink.style.marginLeft = '0.5em'; dnsLink.textContent = 'Do Not Sell or Share My Personal Information'; var creditLinks = document.querySelectorAll( linkElements ); if ( 0 === creditLinks.length ) { return false; } Array.prototype.forEach.call( creditLinks, function( el ) { el.insertAdjacentElement( 'afterend', dnsLink ); }); return true; }; </script> <style type="text/css" id="custom-colors-css"> .nav-menu > li > a:after { color: rgba(0, 0, 0, 0.3); } .main-navigation a, .social-links ul a:before { color: #FFFFFF;} .menu-toggle, .menu-toggle:hover, .menu-toggle:focus { color: #FFFFFF;} .main-navigation.toggled ul ul, .main-navigation.toggled ul ul a { color: #FFFFFF;} .site-info a { color: #FFFFFF;} .main-navigation li.current_page_ancestor > a, .main-navigation li.current-menu-ancestor > a { color: #FFFFFF;} .main-navigation a:hover, .main-navigation ul > :hover > a, .main-navigation ul > .focus > a { color: #FFFFFF;} .main-navigation li.current_page_item > a, .main-navigation li.current-menu-item > a { color: #FFFFFF;} .main-navigation li.current_page_item > a .sub-menu li a, .main-navigation li.current-menu-item > a .sub-menu li a, .main-navigation ul ul li.current_page_item > a, .main-navigation ul ul li.current-menu-item > a { color: #4F4F4F;} body { background-color: #f0f0f0;} .main-navigation, button { background-color: #267aaa;} .main-navigation .nav-menu > li > a:after, .main-navigation .menu > li > a:after { color: #5CACDA;} a, .entry-title a:hover, .comment-meta a, .jetpack-testimonial .entry-title { color: #2374A3;} .widget_flickr #flickr_badge_uber_wrapper td a:last-child, .widget-area .milestone-countdown .difference { color: #2374A3;} .main-navigation ul ul a:hover, .main-navigation ul ul > li.focus > a { color: #2374A3;} input[type="button"], input[type="reset"], input[type="submit"], #infinite-handle span { background-color: #2374A3;} input[type="text"]:focus, input[type="email"]:focus, input[type="password"]:focus, input[type="search"]:focus, input[type="url"]:focus, textarea:focus { border-color: #2374A3;} .social-links ul a:before, .footer-widget-area button { background-color: #7FBCE0;} .site-info a:hover { color: #7FBCE0;} .footer-widget-area a:hover { color: #21719F;} </style> <link rel="icon" href="https://blog.getpaint.net/wp-content/uploads/2019/02/paintdotnet.256.png?w=32" sizes="32x32" /> <link rel="icon" href="https://blog.getpaint.net/wp-content/uploads/2019/02/paintdotnet.256.png?w=192" sizes="192x192" /> <link rel="apple-touch-icon" href="https://blog.getpaint.net/wp-content/uploads/2019/02/paintdotnet.256.png?w=180" /> <meta name="msapplication-TileImage" content="https://blog.getpaint.net/wp-content/uploads/2019/02/paintdotnet.256.png?w=256" /> <script type="text/javascript"> window.google_analytics_uacct = "UA-52447-2"; </script> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-52447-2']); _gaq.push(['_gat._anonymizeIp']); _gaq.push(['_setDomainName', 'none']); _gaq.push(['_setAllowLinker', true]); _gaq.push(['_initData']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga); })(); </script> </head> <body class="home blog custom-background customizer-styles-applied not-multi-author display-header-text jetpack-reblog-enabled"> <div id="page" class="hfeed site"> <header id="masthead" class="site-header" role="banner"> <a class="skip-link screen-reader-text" href="#content" title="Skip to content">Skip to content</a> <div class="site-branding"> <a href="https://blog.getpaint.net/" class="site-logo-link" rel="home" itemprop="url"></a> <h1 class="site-title"><a href="https://blog.getpaint.net/" title="paint.net blog" rel="home">paint.net blog</a></h1> </div><!-- .site-branding --> <nav id="site-navigation" class="main-navigation" role="navigation"> <button class="menu-toggle" aria-controls="menu" aria-expanded="false">Menu</button> <div class="menu"><ul> <li class="current_page_item"><a href="https://blog.getpaint.net/">Home</a></li><li class="page_item page-item-336"><a href="https://blog.getpaint.net/about-2/">About</a></li> </ul></div> </nav><!-- #site-navigation --> </header><!-- #masthead --> <div id="content" class="site-content"> <div id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <article id="post-1187" class="post-1187 post type-post status-publish format-standard hentry category-uncategorized without-featured-image"> <header class="entry-header "> <h1 class="entry-title"><a href=" https://blog.getpaint.net/2024/12/01/paint-net-5-1-1-beta-build-9102/" rel="bookmark">Paint.NET 5.1.1 Beta (build 9102)</a></h1> </header><!-- .entry-header --> <div class="entry-body"> <div class="entry-meta"> <span class="date"><a href="https://blog.getpaint.net/2024/12/01/paint-net-5-1-1-beta-build-9102/" title="Permalink to Paint.NET 5.1.1 Beta (build 9102)" rel="bookmark"><time class="entry-date published" datetime="2024-12-01T17:10:27-08:00">2024-12-01</time><time class="updated" datetime="2024-12-01T20:18:38-08:00">2024-12-01</time></a></span><span class="comments-link"><a href="https://blog.getpaint.net/2024/12/01/paint-net-5-1-1-beta-build-9102/#respond">Leave a comment</a></span> </div><!-- .entry-meta --> <div class="entry-content"> <p>This beta build has some more fixes, particularly for systems with NVIDIA GSYNC enabled.</p> <p><u><strong>Change Log</strong></u></p> <p>Changes since <a href="https://blog.getpaint.net/2024/11/28/paint-net-5-1-1-beta-build-9098/">5.1.1 Beta (build 9098)</a>:</p> <ul> <li><strong>Fixed</strong> Edit->Cut and Edit->Crop to Selection not zeroing out transparent pixels, which could be a privacy issue. <li><strong>Fixed</strong> swapchain valid rect propagation, which may fix some cases of flickering or trails that have been reported. <li><strong>Fixed</strong> some crashes and blanking screen issues related to GSYNC/FreeSync/VRR on some NVIDIA GPUs. The NVAPI profile was not being created which caused VRR to still be active for the app. This also appears to be a bug in NVIDIA’s GPU driver.</li> </ul> <p><u><strong>Download and Install</strong></u></p> <p>This build is available via the built-in updater as long as you have opted-in to pre-release updates. From within <strong>Settings -> Updates</strong>, enable “Also check for pre-release (beta) versions of paint.net” and then click on the <strong>Check Now</strong> button. You can also use the links below to download an offline installer or portable ZIP.</p> <p><img width="751" alt="image.png" src="https://i0.wp.com/media.invisioncic.com/r125076/monthly_2022_11/image.png.1597b1310f04745bd00f97cbd083ba89.png"></p> <p>You can also <a href="https://github.com/paintdotnet/release/releases">download the installer here</a> (for any supported CPU and OS), which is also where you can find downloads for <strong>offline installers, portable ZIPs, and deployable MSIs</strong>.</p> </div><!-- .entry-content --> </div><!-- .entry-body --> </article><!-- #post-## --> <article id="post-1185" class="post-1185 post type-post status-publish format-standard hentry category-uncategorized without-featured-image"> <header class="entry-header "> <h1 class="entry-title"><a href=" https://blog.getpaint.net/2024/11/28/paint-net-5-1-1-beta-build-9098/" rel="bookmark">Paint.NET 5.1.1 Beta (build 9098)</a></h1> </header><!-- .entry-header --> <div class="entry-body"> <div class="entry-meta"> <span class="date"><a href="https://blog.getpaint.net/2024/11/28/paint-net-5-1-1-beta-build-9098/" title="Permalink to Paint.NET 5.1.1 Beta (build 9098)" rel="bookmark"><time class="entry-date published" datetime="2024-11-28T11:03:47-08:00">2024-11-28</time></a></span><span class="comments-link"><a href="https://blog.getpaint.net/2024/11/28/paint-net-5-1-1-beta-build-9098/#comments">2 Comments</a></span> </div><!-- .entry-meta --> <div class="entry-content"> <p>NOTE: I forgot to post 5.1.1 Beta (build 9093) to the blog. See <a href="https://forums.getpaint.net/topic/132345-paintnet-511-beta-build-9093/">the forum post here</a> for information about the fixes in that build.</p> <p>This beta build has some more fixes, particular in the way of workarounds for the crash and hang on systems with Sentinel One antivirus.</p> <p><u><strong>Change Log</strong></u></p> <p>Changes since <a href="https://forums.getpaint.net/topic/132345-paintnet-511-beta-build-9093/">5.1.1 Beta (build 9093)</a>:</p> <ul> <li><strong>Fixed</strong> the inability to load an image with a bad ICC color profile. The color profile will now be ignored and the image will be treated as if it had an sRGB color profile. <li><strong>Fixed</strong> the crash in the “anycpu” installer if Sentinel One is installed (“0xc000007b”). <li><strong>Fixed</strong> the hang at app startup if Sentinel One is installed. If S1 is detected then Async Present will be disabled, which negatively affects input latency/lag (it won’t be worse than PDN 5.0). This is temporary until Sentinel One itself is fixed. <li><strong>Fixed </strong>(maybe/hopefully) some rendering glitches on some systems. Symptoms include mouse trails and a flickering canvas. This was done by disabling swapchain valid rect propagation, which did not seem to be working anyway. The <strong>/disableSwapChainValidRectPropagation</strong> command-line parameter has been removed as a result. <li><b>Added</b> the <strong>/disableSwapChainPresent1</strong> command-line parameter for troubleshooting purposes (will be removed in a future version).</li> </ul> <p><u><strong>Download and Install</strong></u></p> <p>This build is available via the built-in updater as long as you have opted-in to pre-release updates. From within <strong>Settings -> Updates</strong>, enable “Also check for pre-release (beta) versions of paint.net” and then click on the <strong>Check Now</strong> button. You can also use the links below to download an offline installer or portable ZIP.</p> <p><img width="751" alt="image.png" src="https://i0.wp.com/media.invisioncic.com/r125076/monthly_2022_11/image.png.1597b1310f04745bd00f97cbd083ba89.png"></p> <p>You can also <a href="https://github.com/paintdotnet/release/releases">download the installer here</a> (for any supported CPU and OS), which is also where you can find downloads for <strong>offline installers, portable ZIPs, and deployable MSIs</strong>.</p> <div id="atatags-370373-674e9c5d1627f"> <script type="text/javascript"> __ATA.cmd.push(function() { __ATA.initVideoSlot('atatags-370373-674e9c5d1627f', { sectionId: '370373', format: 'inread' }); }); </script> </div> </div><!-- .entry-content --> </div><!-- .entry-body --> </article><!-- #post-## --> <article id="post-1182" class="post-1182 post type-post status-publish format-standard hentry category-uncategorized without-featured-image"> <header class="entry-header "> <h1 class="entry-title"><a href=" https://blog.getpaint.net/2024/11/17/paint-net-5-1-beta-build-9087/" rel="bookmark">Paint.NET 5.1.1 Beta (build 9087)</a></h1> </header><!-- .entry-header --> <div class="entry-body"> <div class="entry-meta"> <span class="date"><a href="https://blog.getpaint.net/2024/11/17/paint-net-5-1-beta-build-9087/" title="Permalink to Paint.NET 5.1.1 Beta (build 9087)" rel="bookmark"><time class="entry-date published" datetime="2024-11-17T13:14:37-08:00">2024-11-17</time><time class="updated" datetime="2024-11-17T13:15:18-08:00">2024-11-17</time></a></span><span class="comments-link"><a href="https://blog.getpaint.net/2024/11/17/paint-net-5-1-beta-build-9087/#respond">Leave a comment</a></span> </div><!-- .entry-meta --> <div class="entry-content"> <p>This is a small update that contains fixes for some bugs that were discovered in 5.1, as well as a new Fill option in the Image->Canvas Size dialog. It also adds back the Settings checkbox that allows for disabling overscroll.</p> <p>Here’s what the updated Canvas Size dialog looks like:</p> <p><a href="https://media.invisioncic.com/r125076/monthly_2024_11/image.png.59a25006501ad076d4fff045c8868881.png"><img width="422" alt="image.png" src="https://i0.wp.com/media.invisioncic.com/r125076/monthly_2024_11/image.thumb.png.f9bbc861f45378ff3d1d6c448c0fee41.png"></a> <a href="https://media.invisioncic.com/r125076/monthly_2024_11/image.png.765bec5e717022520c2b8a0b05cb1a85.png"><img width="391" alt="image.png" src="https://i0.wp.com/media.invisioncic.com/r125076/monthly_2024_11/image.thumb.png.bfac017e92cd6ab8405a9d2fe369e0db.png"></a></p> <p><u><strong>Change Log</strong></u></p> <p>Changes since <a href="https://blog.getpaint.net/2024/11/12/paint-net-5-1-is-now-available/">5.1</a>:</p> <ul> <li><strong>Added</strong> the ability to choose the fill color when expanding the image with Image->Canvas Size <li><strong>Fixed</strong> the ability to paste images with transparency from Firefox <li><strong>Fixed</strong> the ability to paste certain types of images with transparency from Microsoft Office applications <li><strong>Fixed</strong> a crash in the Levels adjustment UI due to a rounding error <li><strong>Fixed</strong> some graphical corruption, hang, or crash issues caused by Nahimic A-Volute malware <li><strong>Reverted</strong> the removal of the Settings checkbox that lets you disable overscroll <li><strong>Fixed</strong> effects calling Dispose() on the IServiceProvider when they shouldn’t have been. This affected plugins like CodeLab and Plugin Browser. <li><strong>Updated</strong> the bundled AVIF FileType to version 3.11.0.0 (thanks <a href="https://forums.getpaint.net/profile/79453-null54/">@null54</a>!)</li> </ul> <p><u><strong>Download and Install</strong></u></p> <p>This build is available via the built-in updater as long as you have opted-in to pre-release updates. From within <strong>Settings -> Updates</strong>, enable “Also check for pre-release (beta) versions of paint.net” and then click on the <strong>Check Now</strong> button. You can also use the links below to download an offline installer or portable ZIP.</p> <p><img width="751" alt="image.png" src="https://i0.wp.com/media.invisioncic.com/r125076/monthly_2022_11/image.png.1597b1310f04745bd00f97cbd083ba89.png"></p> <p>You can also <a href="https://github.com/paintdotnet/release/releases">download the installer here</a> (for any supported CPU and OS), which is also where you can find downloads for <strong>offline installers, portable ZIPs, and deployable MSIs</strong>.</p> </div><!-- .entry-content --> </div><!-- .entry-body --> </article><!-- #post-## --> <article id="post-1180" class="post-1180 post type-post status-publish format-standard hentry category-update-news without-featured-image"> <header class="entry-header "> <h1 class="entry-title"><a href=" https://blog.getpaint.net/2024/11/12/paint-net-5-1-is-now-available/" rel="bookmark">Paint.NET 5.1 is now available!</a></h1> </header><!-- .entry-header --> <div class="entry-body"> <div class="entry-meta"> <span class="date"><a href="https://blog.getpaint.net/2024/11/12/paint-net-5-1-is-now-available/" title="Permalink to Paint.NET 5.1 is now available!" rel="bookmark"><time class="entry-date published" datetime="2024-11-12T18:23:37-08:00">2024-11-12</time></a></span><span class="comments-link"><a href="https://blog.getpaint.net/2024/11/12/paint-net-5-1-is-now-available/#comments">13 Comments</a></span> </div><!-- .entry-meta --> <div class="entry-content"> <p>This is a major update to Paint.NET that includes a raft of technology upgrades including full color management, support for HDR and Wide Color Gamut displays, major improvements to input latency and memory usage, and new and revamped blur effects. In addition, the migration of effects and adjustments to the GPU has been completed, further improving their performance and quality. There are also some new canvas customization settings.</p> <p><u><strong>Color Management</strong></u></p> <p>Paint.NET finally has full color management support, a feature commonly found in more expensive or complicated imaging software. This ensures that images with embedded color profiles look the way they’re supposed to, as originally captured by a camera or as intended by the author. Most cellphone cameras nowadays will take photos in a wide gamut color space like <a href="https://en.wikipedia.org/wiki/DCI-P3">Display P3</a>, and now those photos will have correct colors, brightness, and saturation when opened in Paint.NET.</p> <p>Here’s an example using a NASA photograph of the Cosmic Cliffs nebula taken by the James Webb telescope (<a href="https://www.nasa.gov/image-article/nasas-webb-reveals-cosmic-cliffs-glittering-landscape-of-star-birth/">source</a>). It was captured in infrared and then shifted to the visible light spectrum, and the final result uses the <a href="https://en.wikipedia.org/wiki/ProPhoto_RGB_color_space">ProPhoto RGB</a> color space so as to utilize a very large spectrum of colors.</p> <p><a href="https://content.invisioncic.com/r125076/monthly_2024_11/image.png.b41700b431c7afd135f98ac077f801ad.png"><img width="1000" alt="image.png" src="https://i0.wp.com/content.invisioncic.com/r125076/monthly_2024_11/image.thumb.png.26f4d394c01b4c26bdb5553c0f4ca4e0.png"></a></p> <p><em>(Note that this screenshot’s color is clamped to <a href="https://en.wikipedia.org/wiki/SRGB">sRGB</a>. The real image looks even better on an actual HDR or WCG display!)</em></p> <p>On the left is how the image looks if the color profile is ignored, as you’d see in Paint.NET 5.0 and earlier. On the right, however, the color profile is being applied in real-time to ensure that everything looks exactly as NASA intended it to.</p> <p>Color Management is configured in Settings, but there isn’t much that needs to be configured. <a href="https://learn.microsoft.com/en-us/windows/win32/direct3darticles/high-dynamic-range">Windows Advanced Color</a>, enabled by default, is used to provide one-click color management support for your display. When the display is configured for High Dynamic Range (HDR) or Wide Color Gamut (WCG) mode, this enables high bit-depth output (e.g. 10-bits or more) and use of the display’s full color gamut. Windows then ensures accurate and consistent color reproduction, based on what the display itself tells the system via <a href="https://en.wikipedia.org/wiki/Extended_Display_Identification_Data">EDID</a>.</p> <p>Displays configured for Standard Dynamic Range (SDR) do not support Windows Advanced Color, so Paint.NET will run in <a href="https://en.wikipedia.org/wiki/SRGB">sRGB</a> mode which ensures consistent color reproduction. Color accuracy is then dependent on the display itself being configured for sRGB color output.</p> <p>There are instructions to guide you through enabling HDR or WCG for your display over in Windows Display Settings. A status section gives clear information about the state of color management and the display:</p> <p><a href="https://content.invisioncic.com/r125076/monthly_2024_11/image.png.e17fd2b8cbbf80ff37e871780d0873eb.png"><img width="1000" alt="image.png" src="https://i0.wp.com/content.invisioncic.com/r125076/monthly_2024_11/image.thumb.png.2420a7351c6a4f99accaa363de96874a.png"></a></p> <p>Wide Color Gamut mode is new for Windows 11 v24H2, and is essentially an upgraded SDR mode with high bit-depth output support, automatic color management, desktop composition in linear gamma and at FP16 precision, and none of the fussiness of HDR mode. Your monitor does not transition to HDR mode when this is enabled — it is still operating in SDR mode. I highly recommend checking this out if it is available on your system!</p> <p>The new <strong>Image -> Color Profile</strong> dialog replaces the <strong>Image -> Apply Embedded Color Profile</strong> command introduced in 5.0, which was a one-way “destructive” process that converted the image to the <a href="https://en.wikipedia.org/wiki/SRGB">sRGB</a> color space and then removed the embedded color profile.</p> <p><img width="630" alt="image.png" src="https://i0.wp.com/content.invisioncic.com/r125076/monthly_2024_11/image.png.c4e9a0ab61c44ca6fd8163d743c36244.png"></p> <p>Here you can select from the image’s current color profile, as well as <a href="https://en.wikipedia.org/wiki/SRGB">sRGB</a>, <a href="https://en.wikipedia.org/wiki/Adobe_RGB_color_space">Adobe RGB</a>, <a href="https://en.wikipedia.org/wiki/DCI-P3">Display P3</a>, and <a href="https://en.wikipedia.org/wiki/ProPhoto_RGB_color_space">ProPhoto RGB</a>. Or, you can import a color profile from any *.icc/*.icm file. You can also export the current image’s color profile to a file. I’m planning to revise and expand this dialog as I received feedback about it from the community.</p> <p>The <strong>Convert</strong> button will transform the image from its current color profile to the newly selected one. It will still appear the same on-screen, modulo any precision or gamut limitations. You will then be able to edit the image in the new color space defined by the new color profile.</p> <p>The <strong>Assign</strong> button will change the color profile but not transform the colors of the image, usually resulting in it looking very different. This is useful when you have an image that has the wrong color profile embedded in it, or where the color profile was removed (such as when using “image crushers” that remove all metadata). Another possible use of this is to assign the Display P3 profile to an image to increase its saturation in a way that many people like (some feel that sRGB is undersaturated when displayed correctly).</p> <p>GPU effects and plugins will automatically participate in color management unless they opt-out of it. The default <strong>WorkingSpaceLinear</strong> color context will convert the image to linear gamma in a way that is correct for the image’s color profile. The linearized image is then fed into the effect, which will do its rendering, and then the output of that effect will be converted back to the (non-linearized) color space defined by the image’s color profile. There are also many new APIs for working with colors and color profiles, for both GPU and CPU effects.</p> <p>I’d like to give a special mention and big thanks to <a href="https://github.com/saucecontrol">Clinton Ingram</a> (aka <a href="https://forums.getpaint.net/profile/171803-saucecontrol/">@saucecontrol</a>), not only for his <a href="https://github.com/saucecontrol/PhotoSauce">PhotoSauce</a> library, but for the hours and hours and <em>hours </em>of time he patiently discussed color management with me on Discord. This dialogue spanned several months, during which I slowly learned to crawl and then eventually walk in this extremely complicated, highly technical, and difficult problem space. This feature would not have been possible without his guidance!</p> <p><u><strong>New and Updated Effects</strong></u></p> <p>There are two new blur effects, some updates to existing effects, and all* built-in adjustments and effects have now been fully migrated to run on the GPU.</p> <p><strong>Sketch Blur</strong> is a new blur effect unique to Paint.NET. It was adapted from Andrey Akinshin’s (<a href="https://aakinshin.net/">website</a>, <a href="https://twitter.com/andrey_akinshin">twitter</a>) <a href="https://aakinshin.net/notes/p2-quantile-estimator/">implementation</a> of the P² Quantile Estimator algorithm, which is used to calculate an approximation of the median for a stream of values. You can read more about this effect <a href="https://forums.getpaint.net/topic/124261-median-sketch-gpu/">over here</a>, where I released it as a plugin for 5.0 under the name Median Sketch. It has been further optimized since the release of the plugin, with respect to both performance and quality.</p> <p><a href="https://content.invisioncic.com/r125076/monthly_2024_05/image.png.a0b99d56edf3c58aac402698a712c1f3.png"><img width="1000" alt="image.png" src="https://i0.wp.com/content.invisioncic.com/r125076/monthly_2024_05/image.thumb.png.192da153bd735c81e59f0a07d5568e4b.png"></a></p> <p><strong>Square Blur</strong> is a very simple blur effect that computes the average color of the surrounding square area around each pixel. It could even be considered a very high-performance, but <em>very </em>inaccurate approximation, of the Bokeh Blur effect (which averages out the surrounding circular area).</p> <p><img width="790" alt="image.png" src="https://i0.wp.com/content.invisioncic.com/r125076/monthly_2024_05/image.png.a95c21eecaf727a9dddc524e4ccf0682.png"></p> <p><strong>Median Blur</strong> is a rewrite of the old Noise->Median effect. It accomplishes the same thing but uses the GPU for rendering. It is based on <a href="https://forums.getpaint.net/profile/164277-_koh_/">@_koh_</a>‘s <a href="https://forums.getpaint.net/topic/124551-gpu-median-filter/">“Hi-Lo” algorithm</a> which cleverly uses a binary search approach to calculating the median at a specific precision. You can fine-tune the precision (quality) for the result you want to achieve; lower values produce an interesting posterized look. This effect is also Paint.NET’s first foray into the realm of compute shaders, the use of which unlocked more than a 3x performance improvement over the original pixel shader implementation!</p> <p><a href="https://content.invisioncic.com/r125076/monthly_2024_05/image.png.40b2a3af39e182bc8f906c320e3c7898.png"><img width="1000" alt="image.png" src="https://i0.wp.com/content.invisioncic.com/r125076/monthly_2024_05/image.thumb.png.f5f93869e5835cedde2151699389e1b9.png"></a> <a href="https://content.invisioncic.com/r125076/monthly_2024_05/image.png.7f038ef55a3a7bcdc57d3974e5122b46.png"><img width="1000" alt="image.png" src="https://i0.wp.com/content.invisioncic.com/r125076/monthly_2024_05/image.thumb.png.6537c3d4e1e3aef0f08b9ef35426cb8d.png"></a></p> <p>Auto-Level, Curves, Levels, Oil Painting, Reduce Noise, Surface Blur, and Outline have also been converted to run on the GPU. This completes the transition to a fully GPU-enabled effect system that was started with last year’s 5.0 release.</p> <p>ALL of the built-in GPU effects are available for use by GPU effect <em>plugins</em>, where you can use them as part of a larger Direct2D effect graph to do all sorts of sophisticated and creative image processing. I highly recommend checking out <a href="https://forums.getpaint.net/topic/121344-codelab-v612-for-paintnet-5012-updated-february-11-2024/">CodeLab</a>, which has been updated to support GPU effect development. <a href="https://forums.getpaint.net/profile/44727-boltbait/">@BoltBait</a>‘s <a href="https://forums.getpaint.net/topic/121343-boltbaits-gpu-accelerated-plugin-pack-for-paintnet-v50-updated-2024-04-29/">GPU Accelerated Plugin Pack</a> is also a rich source of useful and interesting GPU effects (and some non-GPU effects!), and has always been an essential addition to Paint.NET. There is also <a href="https://github.com/paintdotnet/PdnV5EffectSamples">source code (on GitHub)</a> for a set of sample effects that I wrote to illustrate how to work with the GPU effect system, which has now been updated for 5.1. Lastly, there is API documentation for both <a href="https://paintdotnet.github.io/apidocs/api/PaintDotNet.Effects.Gpu.html">the built-in GPU effects</a> and the set of <a href="https://paintdotnet.github.io/apidocs/api/PaintDotNet.Direct2D1.Effects.html">built-in and extended Direct2D effects</a>.</p> <p>In addition, plugins can now make use of the <strong>HistogramEffect2</strong> analysis effect<strong>. </strong>Compared to Direct2D’s built-in <strong>HistogramEffect</strong>, it is more precise, can calculate up to 4096 bins (vs. 256), and works on any image size (vs. a max of 4096×4096).</p> <p><em>* There are actually 2 effects that still do not run on the GPU. The first is Colors->Quantize, whose algorithm isn’t amenable to running on the GPU. The second is Photo->Red Eye Removal, which is actually just a wrapper for <a href="https://learn.microsoft.com/en-us/windows/win32/api/gdipluseffects/nl-gdipluseffects-redeyecorrection">a GDI+ effect</a>.</em></p> <p><u><strong>Canvas Customization</strong></u></p> <p>The new <strong>Canvas settings section</strong> has two new settings to let you customize the canvas to your liking. The first is a simple toggle for the drop shadow, and the second is the ability to change the border color (sometimes called the “background” color). In addition, the Transparency Checkerboard Brightness setting has found a new home here.</p> <p><a href="https://content.invisioncic.com/r125076/monthly_2024_05/image.png.6f75bc102f4825233c2618ab531a09fa.png"><img width="1000" alt="image.png" src="https://i0.wp.com/content.invisioncic.com/r125076/monthly_2024_05/image.thumb.png.6c60889ebb6d62063aea141b58dcfc17.png"></a></p> <p>You might be wondering … why? Well, there are 3 big reasons for adding these, and I’ll list them in decreasing order of importance:</p> <ol> <li><strong>Accessibility.</strong> Being able to customize the color of the canvas border is important for some people who are using high-contrast themes. Paint.NET doesn’t really know what to do with these for some of its theme colors, and this allows folks to set a color that is comfortable for their eyes and lighting conditions. <li><strong>Contrast.</strong> Sometimes when you’re editing an image, the drop shadow can trick your eyes into thinking the image is a slightly different size than it actually is. In addition, it can be important to have the ability to change the canvas border color because <em><a href="https://en.wikipedia.org/wiki/Radiosity_(computer_graphics)">light bleeds</a></em>. Whether you realize it or not, the color of the canvas border can slightly and subtly affect your perception of the colors in the image. Changing that allows you to choose a color that is neutral for the images you are working on. <li><strong>Fun.</strong> Some people just want a purple canvas ¯\_(ツ)_/¯ This is a bonus/corollary feature and was not the primary motivation for developing it.</li> </ol> <p><u><strong>Memory Usage and Input Latency</strong></u></p> <p>Last but not least, let’s talk about two important fundamentals: memory usage and input latency (or “lag”). I’ve been chipping away at these little by little over the years, but in 5.1 there have been breakthrough improvements for both of them.</p> <p>With regard to <strong>memory usage</strong>, there are two big optimizations that have came through. The first changes the canvas tile cache so that it now <em>moves</em> tiles to the CPU instead of <em>copying </em>them, which saves quite a lot of CPU memory. The second optimization changes how <a href="https://en.wikipedia.org/wiki/Swap_chain">swapchains</a> are handled: instead of 1 per image tab, there are only 2 that are shared between all of the them: one for the visible tab, and a spare to help prevent flickering when switching tabs. The more images you open, the more GPU memory is saved — sometimes several gigabytes! More information on these two optimizations can be found in <a href="https://forums.getpaint.net/topic/128853-paintnet-51-beta-build-8980/#:~:text=Massively%20Reduced%20Memory%20Usage">the release notes for a beta build released back in August</a>.</p> <p>With regard to <strong>input latency</strong>, there are two upgrades that greatly improve things here. The first is the adoption of <a href="https://devblogs.microsoft.com/directx/dxgi-flip-model/">DXGI Flip Model</a>, which is the presentation technology designed by Microsoft to reduce input latency and power consumption for DirectX games and applications. The second is something I call Async Present, which moves the call to <a href="https://learn.microsoft.com/en-us/windows/win32/api/dxgi/nf-dxgi-idxgiswapchain-present">IDXGISwapChain::Present()</a> (or <a href="https://learn.microsoft.com/en-us/windows/win32/api/dxgi1_2/nf-dxgi1_2-idxgiswapchain1-present1">IDXGISwapChain1::Present1()</a>) to a dedicated, high-priority background thread. In simple terms, this means that the CPU and GPU work are better parallelized: while the GPU is busy finalizing and pushing pixels over to the display, the CPU (specifically the UI thread) can continue receiving and processing input. This has produced <em>very</em> noticeable improvements to input latency and smoothness on most systems.</p> <p><u><strong>Further Reading</strong></u></p> <p>If you’d like to learn more about DXGI Flip Model, Windows Advanced Color, Automatic Color Management, etc. then here are some links:</p> <ul> <li><a href="https://devblogs.microsoft.com/directx/dxgi-flip-model/">For best performance, use DXGI flip model</a> (DirectX Developer Blog) <li><a href="https://devblogs.microsoft.com/directx/auto-color-management/">Advancing the State of Color Management in Windows</a> (DirectX Developer Blog) <li><a href="https://learn.microsoft.com/en-us/windows/win32/direct3darticles/high-dynamic-range">Use DirectX with Advanced Color on high/standard dynamic range displays</a> (MSDN) <li><a href="https://learn.microsoft.com/en-us/windows/win32/wcs/advanced-color-icc-profiles">ICC profile behavior with Advanced Color</a> (MSDN) <li><a href="https://learn.microsoft.com/en-us/windows/win32/wcs/display-calibration-mhc">Windows hardware display color calibration pipeline</a> (MSDN)</li> </ul> <h4>Get the Update</h4> <p>There are two releases of Paint.NET:</p> <ul> <li><strong>Microsoft Store release (recommended)</strong> <ul> <li><a href="https://www.microsoft.com/en-us/p/paintnet/9nbhcs1lx4r0?cid=pdn_blog_5_1">You can purchase it here</a>. This helps fund development and is an alternative or supplement to <a href="https://www.getpaint.net/donate.html">sending in a donation</a>. In addition, updates happen automatically in the background when you’re not using the app. <li>If you already have it installed, the update should happen automatically once Microsoft certifies the update, usually within the next day or so. To get the update immediately (once it’s certified), you can <a href="https://forums.getpaint.net/topic/113232-paintnet-411-is-now-available/?do=findComment&comment=548939">follow the instructions listed here</a>.</li> </ul> <li>Classic Desktop release <ul> <li><a href="https://getpaint.net/">Download the installer from the website</a>. This is the recommended download if you don’t have Paint.NET installed. It can also be used to update the app. <li>If you already have it installed, you should be offered the update automatically within the next few days, but you can also get it immediately by going to ⚙ Settings -> Updates -> Check Now. <li><strong>Offline Installers and Portable ZIPs</strong> <a href="https://github.com/paintdotnet/release/releases/latest">are available over on GitHub</a>.</li> </ul> </li> </ul> <h4>Change Log</h4> <p>Changes since <a href="https://blog.getpaint.net/2024/03/05/paint-net-5-0-13-is-now-available/">5.0.13</a>:</p> <ul> <li><strong>New:</strong> <strong>Color Management support</strong> <ul> <li>Images with embedded color profiles will now be displayed correctly using real-time color conversion built on <a href="https://github.com/saucecontrol/PhotoSauce">PhotoSauce</a> and Direct2D. <li>On HDR and WCG (Wide Color Gamut) displays, Paint.NET will make use of Windows Advanced Color which then enables high bit-depth output and use of the display’s full color gamut. Windows ensures color consistency and accuracy for the whole desktop. <li>On SDR displays, Paint.NET will operate in sRGB mode and provide consistent color reproduction. If the display is configured for sRGB then colors will also be accurate.</li> </ul> <li><strong>New: Image->Color Profile</strong> replaces Image->Apply Embedded Color Profile, and provides the ability to change the image’s color profile via Assign and Convert actions. <li><strong>New:</strong> Fully modernized canvas presentation engine that utilizes DXGI Flip Model, Advanced Color, and Windows.UI.Composition. <li><strong>Improved:</strong> Input latency has been significantly reduced by using DXGI Flip Model and Async Present. <li><strong>New:</strong> Canvas section in Settings provides the ability to customize the canvas brightness, border color, and shadow <li><strong>Improved</strong> the canvas rendering quality by using linear gamma. This improves overall performance and also improves the appearance of selection handles and other canvas UI elements. <li><strong>Updated:</strong> All remaining effects and adjustments have been ported to use the GPU <ul> <li>Newly converted in 5.1 are: Auto-Level, Curves, Levels, Oil Painting, Surface Blur, Reduce Noise, and Outline. <li>The two exceptions to this are <strong>Effects->Color->Quantize</strong> and <strong>Effects->Photo->Red Eye Removal</strong>. The first is not amenable to running on the GPU, and the second is actually a wrapper around an old GDI+ effect.</li> </ul> <li><strong>New:</strong> <strong>Effects->Blur->Sketch Blur</strong> is a new blur effect that gives the appearance of a painting drawn with a coarse brush. <li><strong>New: Effects->Blur->Median Blur</strong> replaces Effects->Noise->Median, and now runs on the GPU with much higher quality. <li><strong>New:</strong> <strong>Effects->Blur->Square Blur</strong> <li><strong>Changed:</strong> Gaussian Blur and Bokeh Blur now have a “Gamma Boost” slider instead of a “Gamma” property. This is now used to configure the <em>change</em> in gamma rather than specifying the gamma that the image should be assumed to have. The intent is still to provide something of a brightness/highlights amplifier for creative purposes. <li><strong>Changed:</strong> Effects -> Blur -> Motion Blur now uses a Gaussian kernel. <li><strong>New:</strong> Effects->Render->Clouds now has a Colors tab for configuring the colors that are used <li><strong>Changed:</strong> Image->Canvas Size will no longer use the secondary color to fill in new areas for the “background” layer. It will always fill with transparent black (#00000000). <li><strong>Improved dithering quality</strong> when saving an image at 8-bit or lower color depth, and when using Effects->Color->Quantize <li><strong>New:</strong> Updated to use Mica effects in the title bar on Windows 11 <li><strong>Fixed</strong> some more scrollbars to respect dark theme (thanks <a href="https://forums.getpaint.net/profile/46943-toe_head2001/">@toe_head2001</a>!) <li><strong>Fixed:</strong> The Move Selected Pixels tool will no longer finish (commit) when toggling layer visibility. This was a workaround for a bug during an early beta of 4.0 that does not seem to be necessary anymore. <li><strong>Improved: Greatly reduced CPU memory usage</strong> by maintaining the tile cache only on the GPU instead of having a copy on the CPU-side as well. <li><strong>Improved: Significantly reduced GPU memory usage</strong> by consolidating down to 2 swapchains that are shared among image tabs, instead of each image tab having its own private swapchain. <li><strong>Improved:</strong> GPU effects now use a smaller tile size on GPUs with less RAM, which should enable faster updates and cancellation response on older GPUs. This also significantly lowers the probability of TDR events, particularly for expensive effects like Median Blur. <li><strong>Fixed:</strong> The Save Configuration dialog sometimes looked like it was having a seizure when panning after zooming (w/ Ctrl + Mouse Wheel) <li><strong>Fixed:</strong> The Line/Curve and Shapes tools would cancel instead of commit (Finish) when pressing ESC too soon after using the arrow keys to move the shape <li><strong>Improved</strong> the performance of the portable release by reducing how often the JSON settings file is flushed. <li><strong>New:</strong> CMYK64 images can now be loaded. Note that CMYK images are always transformed to Adobe RGB. <li><strong>New:</strong> Added the <strong>ExponentialScale</strong> double property for IndirectUI. The default value is 2.0. It goes along with the <strong>UseExponentialScale</strong> boolean property. <li><strong>New:</strong> GPU effect plugins can now use compute shaders. Note that this is “raw” support by providing access to the necessary Direct2D interfaces (e.g. ID2D1ComputeInfo). <li><strong>Deprecated:</strong> The classic/legacy effect system has been marked as <strong>[Obsolete]</strong>. Compiling a classic/legacy effect will produce a compile-time warning along with a message about migrating to the new GpuEffect or BitmapEffect systems. This will be changed to a compile-time error in a future update (either v5.2 or v6.0, whichever is next). <li><strong>Removed:</strong> Settings -> UI -> Show image previews in the Windows taskbar. <li><strong>Removed:</strong> Settings -> UI -> Enable scrolling past the edge of the canvas (overscroll). This is now always enabled. <li><strong>Updated</strong> to use .NET 9.0 (previously this was .NET 7.0) <li><strong>Updated</strong> the minimum OS requirement to Windows 10 v21H2 (previously this was Windows 10 v1809) <li><strong>Updated</strong> the bundled AVIF FileType to version 3.10.0.0. Thanks <a href="https://forums.getpaint.net/profile/79453-null54/">@null54</a>! <li><strong>Updated</strong> the bundled DDS FileType Plus to version 1.12.11.0. Thanks <a href="https://forums.getpaint.net/profile/79453-null54/">@null54</a>! <li><strong>Updated</strong> the bundled WebP FileType to version 1.4.0.0. Thanks <a href="https://forums.getpaint.net/profile/79453-null54/">@null54</a>!</li> </ul> </div><!-- .entry-content --> </div><!-- .entry-body --> </article><!-- #post-## --> <article id="post-1177" class="post-1177 post type-post status-publish format-standard hentry category-update-news without-featured-image"> <header class="entry-header "> <h1 class="entry-title"><a href=" https://blog.getpaint.net/2024/11/01/paint-net-5-0-beta-build-9072/" rel="bookmark">Paint.NET 5.0 Beta (build 9072)</a></h1> </header><!-- .entry-header --> <div class="entry-body"> <div class="entry-meta"> <span class="date"><a href="https://blog.getpaint.net/2024/11/01/paint-net-5-0-beta-build-9072/" title="Permalink to Paint.NET 5.0 Beta (build 9072)" rel="bookmark"><time class="entry-date published" datetime="2024-11-01T18:32:27-07:00">2024-11-01</time></a></span><span class="comments-link"><a href="https://blog.getpaint.net/2024/11/01/paint-net-5-0-beta-build-9072/#comments">1 Comment</a></span> </div><!-- .entry-meta --> <div class="entry-content"> <p>This is a quick follow-up to the previous build, fixing a few more small bugs and improving performance.</p> <p><u><strong>Change Log</strong></u></p> <p>Changes since <a href="https://blog.getpaint.net/2024/10/30/paint-net-5-1-beta-build-9070/">5.1 beta (build 9070)</a>:</p> <ul> <li><strong>Fixed</strong> a few more cases where tool shortcuts and tooltips were not working after certain actions. <li><strong>Fixed:</strong> PNGs are now correctly saved with the “Software” tEXt metadata indicating they were created with Paint.NET. <li><strong>Improved</strong> performance in various parts of the rendering and effects engines: CPU usage has been reduced which permits higher GPU utilization.</li> </ul> <p><u><strong>Download and Install</strong></u></p> <p>This build is available via the built-in updater as long as you have opted-in to pre-release updates. From within <strong>Settings -> Updates</strong>, enable “Also check for pre-release (beta) versions of paint.net” and then click on the <strong>Check Now</strong> button. You can also use the links below to download an offline installer or portable ZIP.</p> <p><img width="751" alt="image.png" src="https://i0.wp.com/content.invisioncic.com/r125076/monthly_2022_11/image.png.1597b1310f04745bd00f97cbd083ba89.png"></p> <p>You can also <a href="https://github.com/paintdotnet/release/releases">download the installer here</a> (for any supported CPU and OS), which is also where you can find downloads for <strong>offline installers, portable ZIPs, and deployable MSIs</strong>.</p> </div><!-- .entry-content --> </div><!-- .entry-body --> </article><!-- #post-## --> <article id="post-1174" class="post-1174 post type-post status-publish format-standard hentry category-uncategorized without-featured-image"> <header class="entry-header "> <h1 class="entry-title"><a href=" https://blog.getpaint.net/2024/10/30/paint-net-5-1-beta-build-9070/" rel="bookmark">Paint.NET 5.1 Beta (build 9070)</a></h1> </header><!-- .entry-header --> <div class="entry-body"> <div class="entry-meta"> <span class="date"><a href="https://blog.getpaint.net/2024/10/30/paint-net-5-1-beta-build-9070/" title="Permalink to Paint.NET 5.1 Beta (build 9070)" rel="bookmark"><time class="entry-date published" datetime="2024-10-30T18:09:28-07:00">2024-10-30</time><time class="updated" datetime="2024-10-30T18:10:35-07:00">2024-10-30</time></a></span><span class="comments-link"><a href="https://blog.getpaint.net/2024/10/30/paint-net-5-1-beta-build-9070/#comments">1 Comment</a></span> </div><!-- .entry-meta --> <div class="entry-content"> <p>This update fixes a few longstanding issues with copy/paste, tool shortcut keys, and tooltips in the Tools window. I’ve also changed the capitalization of “paint.net” to be “Paint.NET.”</p> <p><u><strong>Change Log</strong></u></p> <p>Changes since <a href="https://blog.getpaint.net/2024/10/27/paint-net-5-1-beta-build-9066/">5.1 beta (build 9066)</a>:</p> <ul> <li><strong>Fixed:</strong> Copy/Paste has been hardened against short-term intermittent errors and should no longer show spurious error dialogs (e.g. <strong>ERROR_ACCESS_DENIED</strong>) except in legitimate cases. <li><strong>Fixed:</strong> Certain shortcut keys, especially for switching tools, will no longer stop functioning if a floating window (e.g. Tools) is hidden and then shown by clicking on the button at the top right of the main window. <li><strong>Fixed:</strong> Tooltips in the Tools window will no longer stop functioning if a floating window (e.g. Tools) is hidden and then shown by clicking on the button at the top right of the main window. <li><strong>Removed</strong> the “Scrolling past the edge of the image (overscroll)” checkbox from Settings. This was enabled by default, and now it is always enabled. <li><strong>Fixed:</strong> The installer was occasionally showing an error about an <strong>InvalidGraphConfigurationException</strong> on some systems <li><strong>Added</strong> a KnownColorSpace API for plugins so they can create <strong>IColorContexts</strong> and <strong>IDeviceColorContexts</strong> for the Display P3 and ProPhoto RGB color spaces</li> </ul> <p><u><strong>Download and Install</strong></u></p> <p>This build is available via the built-in updater as long as you have opted-in to pre-release updates. From within <strong>Settings -> Updates</strong>, enable “Also check for pre-release (beta) versions of paint.net” and then click on the <strong>Check Now</strong> button. You can also use the links below to download an offline installer or portable ZIP.</p> <p><img width="751" alt="image.png" src="https://i0.wp.com/content.invisioncic.com/r125076/monthly_2022_11/image.png.1597b1310f04745bd00f97cbd083ba89.png"></p> <p>You can also <a href="https://github.com/paintdotnet/release/releases">download the installer here</a> (for any supported CPU and OS), which is also where you can find downloads for <strong>offline installers, portable ZIPs, and deployable MSIs</strong>.</p> </div><!-- .entry-content --> </div><!-- .entry-body --> </article><!-- #post-## --> <article id="post-1172" class="post-1172 post type-post status-publish format-standard hentry category-uncategorized without-featured-image"> <header class="entry-header "> <h1 class="entry-title"><a href=" https://blog.getpaint.net/2024/10/27/paint-net-5-1-beta-build-9066/" rel="bookmark">paint.net 5.1 beta (build 9066)</a></h1> </header><!-- .entry-header --> <div class="entry-body"> <div class="entry-meta"> <span class="date"><a href="https://blog.getpaint.net/2024/10/27/paint-net-5-1-beta-build-9066/" title="Permalink to paint.net 5.1 beta (build 9066)" rel="bookmark"><time class="entry-date published" datetime="2024-10-27T22:30:46-07:00">2024-10-27</time></a></span><span class="comments-link"><a href="https://blog.getpaint.net/2024/10/27/paint-net-5-1-beta-build-9066/#comments">8 Comments</a></span> </div><!-- .entry-meta --> <div class="entry-content"> <p>This is a hotfix that fixes a plugin, <a href="https://forums.getpaint.net/profile/44727-boltbait/">@BoltBait</a>‘s Text Fun Factory, that was broken in the previous beta build.</p> <p><u><strong>Change Log</strong></u></p> <p>Changes since <a href="https://blog.getpaint.net/2024/10/25/paint-net-5-1-beta-build-9064/">5.1 beta (build 9064)</a>:</p> <ul> <li><strong>Fixed:</strong> <a href="https://forums.getpaint.net/profile/44727-boltbait/">@BoltBait</a>‘s TextFunFactory plugin was not working on Windows 10 due to the lack of support for IDWriteFontFace6 (despite what Microsoft’s documentation states)</li> </ul> <p><u><strong>Download and Install</strong></u></p> <p>This build is available via the built-in updater as long as you have opted-in to pre-release updates. From within <strong>Settings -> Updates</strong>, enable “Also check for pre-release (beta) versions of paint.net” and then click on the <strong>Check Now</strong> button. You can also use the links below to download an offline installer or portable ZIP.</p> <p><img width="751" alt="image.png" src="https://i0.wp.com/content.invisioncic.com/r125076/monthly_2022_11/image.png.1597b1310f04745bd00f97cbd083ba89.png"></p> <p>You can also <a href="https://github.com/paintdotnet/release/releases">download the installer here</a> (for any supported CPU and OS), which is also where you can find downloads for <strong>offline installers, portable ZIPs, and deployable MSIs</strong>.</p> </div><!-- .entry-content --> </div><!-- .entry-body --> </article><!-- #post-## --> <article id="post-1170" class="post-1170 post type-post status-publish format-standard hentry category-uncategorized without-featured-image"> <header class="entry-header "> <h1 class="entry-title"><a href=" https://blog.getpaint.net/2024/10/25/paint-net-5-1-beta-build-9064/" rel="bookmark">paint.net 5.1 beta (build 9064)</a></h1> </header><!-- .entry-header --> <div class="entry-body"> <div class="entry-meta"> <span class="date"><a href="https://blog.getpaint.net/2024/10/25/paint-net-5-1-beta-build-9064/" title="Permalink to paint.net 5.1 beta (build 9064)" rel="bookmark"><time class="entry-date published" datetime="2024-10-25T11:02:35-07:00">2024-10-25</time></a></span><span class="comments-link"><a href="https://blog.getpaint.net/2024/10/25/paint-net-5-1-beta-build-9064/#comments">4 Comments</a></span> </div><!-- .entry-meta --> <div class="entry-content"> <p>This is a hotfix for the bugs that were discovered in <a href="https://blog.getpaint.net/2024/10/24/paint-net-5-0-beta-build-9063/">the previous build (5.1 beta build 9063</a>).</p> <p><u><strong>Change Log</strong></u></p> <p>Changes since <a href="https://blog.getpaint.net/2024/10/24/paint-net-5-0-beta-build-9063/">5.1 beta (build 9063)</a>:</p> <ul> <li><strong>Fixed: </strong>Clicking in the color wheel was not setting the active color <li><strong>Fixed:</strong> Retrieving an 8-bit bitmap from the clipboard with <strong>IClipboardService.TryGetImageBgra32()</strong> was not working</li> </ul> <p><u><strong>Download and Install</strong></u></p> <p>This build is available via the built-in updater as long as you have opted-in to pre-release updates. From within <strong>Settings -> Updates</strong>, enable “Also check for pre-release (beta) versions of paint.net” and then click on the <strong>Check Now</strong> button. You can also use the links below to download an offline installer or portable ZIP.</p> <p><img width="751" alt="image.png" src="https://i0.wp.com/content.invisioncic.com/r125076/monthly_2022_11/image.png.1597b1310f04745bd00f97cbd083ba89.png"></p> <p>You can also <a href="https://github.com/paintdotnet/release/releases">download the installer here</a> (for any supported CPU and OS), which is also where you can find downloads for <strong>offline installers, portable ZIPs, and deployable MSIs</strong>.</p> </div><!-- .entry-content --> </div><!-- .entry-body --> </article><!-- #post-## --> <article id="post-1168" class="post-1168 post type-post status-publish format-standard hentry category-uncategorized without-featured-image"> <header class="entry-header "> <h1 class="entry-title"><a href=" https://blog.getpaint.net/2024/10/24/paint-net-5-0-beta-build-9063/" rel="bookmark">paint.net 5.1 beta (build 9063)</a></h1> </header><!-- .entry-header --> <div class="entry-body"> <div class="entry-meta"> <span class="date"><a href="https://blog.getpaint.net/2024/10/24/paint-net-5-0-beta-build-9063/" title="Permalink to paint.net 5.1 beta (build 9063)" rel="bookmark"><time class="entry-date published" datetime="2024-10-24T15:49:08-07:00">2024-10-24</time><time class="updated" datetime="2024-11-12T18:16:39-08:00">2024-11-12</time></a></span><span class="comments-link"><a href="https://blog.getpaint.net/2024/10/24/paint-net-5-0-beta-build-9063/#comments">3 Comments</a></span> </div><!-- .entry-meta --> <div class="entry-content"> <p>This build fixes some issues reported with <a href="https://forums.getpaint.net/topic/131293-paintnet-51-beta-build-9056/">the previous build</a>, namely with pasting or loading images of certain types (e.g. 8-bit PNGs) or with certain types of color profiles (XYB/LUT). Input latency for the canvas has also been further reduced a little.</p> <p><u><strong>Change Log</strong></u></p> <p>Changes since <a href="https://blog.getpaint.net/2024/10/17/paint-net-5-1-beta-build-9056/">5.1 beta (build 9056)</a>:</p> <ul> <li><strong>Fixed:</strong> Right-clicking in the Colors window’s palette will now correctly set the inactive color (regression from 5.0) <li><strong>Improved input latency further</strong> by using a dedicated per-Control thread for asynchronously calling <strong>IDXGISwapChain[1]::Present[1]()</strong> instead of using the shared threadpool. This also fixes some weirdness at startup with canvas redrawing when a lot of plugins are installed, especially if antivirus decides to do a more in-depth security scan. <li><strong>Fixed:</strong> Could not copy 8-bit-or-less bit-depth images from Explorer into Paint.NET. <li><strong>Fixed:</strong> Copying a 4-bit PNG from Explorer into Paint.NET would have extremely bad performance. <li><strong>Fixed:</strong> Images with XYB LUT color profiles were not loading, or were loading incorrectly <li><strong>Fixed:</strong> GPU effect plugins will not default to Float32 precision when using IDeviceContext.CreateImageFromBitmap(). This was otherwise resulting in inconsistent rendering output or analysis results. <li><strong>Fixed:</strong> <strong>IImagingFactory.CreateColorTransformedBitmap()</strong> and <strong>IBitmapSource.CreateColorTransformer()</strong> are now available for plugins to make use of for color management purposes. <li><strong>New:</strong> Plugins may now use <strong>PixelFormat.[Try]CreateDefaultColorContext()</strong>, <strong>IImagingFactory.[Try]CreateDefaultColorContext()</strong>, and <strong>IDeviceContext.[Try]CreateDefaultColorContext() </strong>extension methods. These will create the default color context (color profile) for the given <strong>PixelFormat</strong>. <li><strong>New:</strong> Plugins may now use the <strong>PixelFormat.GetInfo()</strong> extension method to retrieve the corresponding <strong>IPixelFormatInfo</strong> object <li><b>New: </b>Plugins may now implement the managed <strong>ITextRenderer</strong> interface (corresponds to the native <strong>IDWriteTextRenderer1</strong> interface), and use it when calling <strong>ITextLayout::Draw(…)</strong> <li><strong>New: </strong>Added <strong>ITextLayout</strong> methods <strong>Get/SetCharacterSpacing</strong> and <strong>Get/SetPairKerning</strong> <li><strong>New: </strong>Added <strong>ITextFormat </strong>properties <strong>LastLineWrapping</strong>, <strong>OpticalAlignment</strong>, and <strong>VerticalGlyphOrientation</strong></li> </ul> <p><u><strong>Download and Install</strong></u></p> <p>This build is available via the built-in updater as long as you have opted-in to pre-release updates. From within <strong>Settings -> Updates</strong>, enable “Also check for pre-release (beta) versions of paint.net” and then click on the <strong>Check Now</strong> button. You can also use the links below to download an offline installer or portable ZIP.</p> <p><img width="751" alt="image.png" src="https://i0.wp.com/content.invisioncic.com/r125076/monthly_2022_11/image.png.1597b1310f04745bd00f97cbd083ba89.png"></p> <p>You can also <a href="https://github.com/paintdotnet/release/releases">download the installer here</a> (for any supported CPU and OS), which is also where you can find downloads for <strong>offline installers, portable ZIPs, and deployable MSIs</strong>.</p> </div><!-- .entry-content --> </div><!-- .entry-body --> </article><!-- #post-## --> <article id="post-1166" class="post-1166 post type-post status-publish format-standard hentry category-uncategorized without-featured-image"> <header class="entry-header "> <h1 class="entry-title"><a href=" https://blog.getpaint.net/2024/10/17/paint-net-5-1-beta-build-9056/" rel="bookmark">paint.net 5.1 beta (build 9056)</a></h1> </header><!-- .entry-header --> <div class="entry-body"> <div class="entry-meta"> <span class="date"><a href="https://blog.getpaint.net/2024/10/17/paint-net-5-1-beta-build-9056/" title="Permalink to paint.net 5.1 beta (build 9056)" rel="bookmark"><time class="entry-date published" datetime="2024-10-17T16:49:13-07:00">2024-10-17</time></a></span><span class="comments-link"><a href="https://blog.getpaint.net/2024/10/17/paint-net-5-1-beta-build-9056/#comments">7 Comments</a></span> </div><!-- .entry-meta --> <div class="entry-content"> <p>Just a few more changes and fixes before the stable release next month, including some tweaks to clipboard handling with respect to color management.</p> <p><u><strong>Change Log</strong></u></p> <p>Changes since <a href="https://blog.getpaint.net/2024/09/28/paint-net-5-1-beta-build-9038/">5.1 beta (build 9038)</a>:</p> <ul> <li><strong>Updated</strong> clipboard handling with respect to color management: instead of being converted to sRGB, PNGs copied to the clipboard now contain the image’s color profile. When pasting a PNG from the clipboard, the color profile is used if it’s available. For plugins using <strong>IClipboardService</strong>, there are now methods for including the color profile when copying, and obtaining the color profile when pasting. <li><strong>Fixed</strong> Edit->Paste into New Layer and Layers->Import from File so they fill with transparent black instead of the secondary color when expanding the canvas size <li><strong>Fixed</strong> some flickering in the toolbar when undoing certain commands <li><strong>Slightly improved</strong> overall performance by switching to .NET 9’s System.Threading.Lock <li><strong>Fixed </strong>a few small performance bugs with the new Direct2D Flip Mode code <li><strong>Updated</strong> to .NET 9.0-rc2, which fixes a small visual glitch in window titlebars</li> </ul> <p><u><strong>Download and Install</strong></u></p> <p>This build is available via the built-in updater as long as you have opted-in to pre-release updates. From within <strong>Settings -> Updates</strong>, enable “Also check for pre-release (beta) versions of paint.net” and then click on the <strong>Check Now</strong> button. You can also use the links below to download an offline installer or portable ZIP.</p> <p><img width="751" alt="image.png" src="https://i0.wp.com/content.invisioncic.com/r125076/monthly_2022_11/image.png.1597b1310f04745bd00f97cbd083ba89.png"></p> <p>You can also <a href="https://github.com/paintdotnet/release/releases">download the installer here</a> (for any supported CPU and OS), which is also where you can find downloads for <strong>offline installers, portable ZIPs, and deployable MSIs</strong>.</p> </div><!-- .entry-content --> </div><!-- .entry-body --> </article><!-- #post-## --> <nav class="navigation paging-navigation" role="navigation"> <h1 class="screen-reader-text">Posts navigation</h1> <div class="nav-links"> <div class="nav-previous"><a href="https://blog.getpaint.net/page/2/" ><span class="meta-nav"></span> Older posts</a></div> </div><!-- .nav-links --> </nav><!-- .navigation --> </main><!-- #main --> </div><!-- #primary --> <div id="secondary" class="widget-area sidebar-widget-area" role="complementary"> <aside id="block-5" class="widget widget_block widget_search"><form role="search" method="get" action="https://blog.getpaint.net/" class="wp-block-search__button-outside wp-block-search__text-button wp-block-search" ><label class="wp-block-search__label" for="wp-block-search__input-1" >Search</label><div class="wp-block-search__inside-wrapper " ><input class="wp-block-search__input" id="wp-block-search__input-1" placeholder="" value="" type="search" name="s" required /><button aria-label="Search" class="wp-block-search__button wp-element-button" type="submit" >Search</button></div></form></aside><aside id="twitter_timeline-3" class="widget widget_twitter_timeline"><h3 class="widget-title">Follow me on Twitter</h3><a class="twitter-timeline" data-width="220" data-height="200" data-theme="light" data-border-color="#f0f0f1" data-lang="EN" data-partner="jetpack" href="https://twitter.com/rickbrewPDN" href="https://twitter.com/rickbrewPDN">My Tweets</a></aside><aside id="block-4" class="widget widget_block widget_archive"><ul class="wp-block-archives-list wp-block-archives"> <li><a href='https://blog.getpaint.net/2024/12/'>December 2024</a></li> <li><a href='https://blog.getpaint.net/2024/11/'>November 2024</a></li> <li><a href='https://blog.getpaint.net/2024/10/'>October 2024</a></li> <li><a href='https://blog.getpaint.net/2024/09/'>September 2024</a></li> <li><a href='https://blog.getpaint.net/2024/08/'>August 2024</a></li> <li><a href='https://blog.getpaint.net/2024/03/'>March 2024</a></li> <li><a href='https://blog.getpaint.net/2023/12/'>December 2023</a></li> <li><a href='https://blog.getpaint.net/2023/10/'>October 2023</a></li> <li><a href='https://blog.getpaint.net/2023/08/'>August 2023</a></li> <li><a href='https://blog.getpaint.net/2023/07/'>July 2023</a></li> <li><a href='https://blog.getpaint.net/2023/06/'>June 2023</a></li> <li><a href='https://blog.getpaint.net/2023/05/'>May 2023</a></li> <li><a href='https://blog.getpaint.net/2023/03/'>March 2023</a></li> <li><a href='https://blog.getpaint.net/2023/02/'>February 2023</a></li> <li><a href='https://blog.getpaint.net/2023/01/'>January 2023</a></li> <li><a href='https://blog.getpaint.net/2022/12/'>December 2022</a></li> <li><a href='https://blog.getpaint.net/2022/11/'>November 2022</a></li> <li><a href='https://blog.getpaint.net/2022/08/'>August 2022</a></li> <li><a href='https://blog.getpaint.net/2022/05/'>May 2022</a></li> <li><a href='https://blog.getpaint.net/2022/03/'>March 2022</a></li> <li><a href='https://blog.getpaint.net/2022/02/'>February 2022</a></li> <li><a href='https://blog.getpaint.net/2022/01/'>January 2022</a></li> <li><a href='https://blog.getpaint.net/2021/12/'>December 2021</a></li> <li><a href='https://blog.getpaint.net/2021/11/'>November 2021</a></li> <li><a href='https://blog.getpaint.net/2021/10/'>October 2021</a></li> <li><a href='https://blog.getpaint.net/2021/09/'>September 2021</a></li> <li><a href='https://blog.getpaint.net/2021/08/'>August 2021</a></li> <li><a href='https://blog.getpaint.net/2021/07/'>July 2021</a></li> <li><a href='https://blog.getpaint.net/2021/04/'>April 2021</a></li> <li><a href='https://blog.getpaint.net/2021/01/'>January 2021</a></li> <li><a href='https://blog.getpaint.net/2020/10/'>October 2020</a></li> <li><a href='https://blog.getpaint.net/2020/09/'>September 2020</a></li> <li><a href='https://blog.getpaint.net/2020/08/'>August 2020</a></li> <li><a href='https://blog.getpaint.net/2020/07/'>July 2020</a></li> <li><a href='https://blog.getpaint.net/2020/05/'>May 2020</a></li> <li><a href='https://blog.getpaint.net/2020/04/'>April 2020</a></li> <li><a href='https://blog.getpaint.net/2020/02/'>February 2020</a></li> <li><a href='https://blog.getpaint.net/2020/01/'>January 2020</a></li> <li><a href='https://blog.getpaint.net/2019/12/'>December 2019</a></li> <li><a href='https://blog.getpaint.net/2019/11/'>November 2019</a></li> <li><a href='https://blog.getpaint.net/2019/10/'>October 2019</a></li> <li><a href='https://blog.getpaint.net/2019/09/'>September 2019</a></li> <li><a href='https://blog.getpaint.net/2019/08/'>August 2019</a></li> <li><a href='https://blog.getpaint.net/2019/07/'>July 2019</a></li> <li><a href='https://blog.getpaint.net/2019/06/'>June 2019</a></li> <li><a href='https://blog.getpaint.net/2019/05/'>May 2019</a></li> <li><a href='https://blog.getpaint.net/2019/03/'>March 2019</a></li> <li><a href='https://blog.getpaint.net/2018/12/'>December 2018</a></li> <li><a href='https://blog.getpaint.net/2018/11/'>November 2018</a></li> <li><a href='https://blog.getpaint.net/2018/10/'>October 2018</a></li> <li><a href='https://blog.getpaint.net/2018/09/'>September 2018</a></li> <li><a href='https://blog.getpaint.net/2018/08/'>August 2018</a></li> <li><a href='https://blog.getpaint.net/2018/04/'>April 2018</a></li> <li><a href='https://blog.getpaint.net/2018/01/'>January 2018</a></li> <li><a href='https://blog.getpaint.net/2017/12/'>December 2017</a></li> <li><a href='https://blog.getpaint.net/2017/10/'>October 2017</a></li> <li><a href='https://blog.getpaint.net/2017/09/'>September 2017</a></li> <li><a href='https://blog.getpaint.net/2017/08/'>August 2017</a></li> <li><a href='https://blog.getpaint.net/2017/07/'>July 2017</a></li> <li><a href='https://blog.getpaint.net/2017/06/'>June 2017</a></li> <li><a href='https://blog.getpaint.net/2017/04/'>April 2017</a></li> <li><a href='https://blog.getpaint.net/2016/12/'>December 2016</a></li> <li><a href='https://blog.getpaint.net/2016/09/'>September 2016</a></li> <li><a href='https://blog.getpaint.net/2016/07/'>July 2016</a></li> <li><a href='https://blog.getpaint.net/2016/06/'>June 2016</a></li> <li><a href='https://blog.getpaint.net/2016/01/'>January 2016</a></li> <li><a href='https://blog.getpaint.net/2015/12/'>December 2015</a></li> <li><a href='https://blog.getpaint.net/2015/08/'>August 2015</a></li> <li><a href='https://blog.getpaint.net/2015/07/'>July 2015</a></li> <li><a href='https://blog.getpaint.net/2014/12/'>December 2014</a></li> <li><a href='https://blog.getpaint.net/2014/11/'>November 2014</a></li> <li><a href='https://blog.getpaint.net/2014/07/'>July 2014</a></li> <li><a href='https://blog.getpaint.net/2014/06/'>June 2014</a></li> <li><a href='https://blog.getpaint.net/2014/04/'>April 2014</a></li> <li><a href='https://blog.getpaint.net/2014/02/'>February 2014</a></li> <li><a href='https://blog.getpaint.net/2014/01/'>January 2014</a></li> <li><a href='https://blog.getpaint.net/2013/12/'>December 2013</a></li> <li><a href='https://blog.getpaint.net/2013/11/'>November 2013</a></li> <li><a href='https://blog.getpaint.net/2013/10/'>October 2013</a></li> <li><a href='https://blog.getpaint.net/2013/08/'>August 2013</a></li> <li><a href='https://blog.getpaint.net/2013/03/'>March 2013</a></li> <li><a href='https://blog.getpaint.net/2012/10/'>October 2012</a></li> <li><a href='https://blog.getpaint.net/2012/09/'>September 2012</a></li> <li><a href='https://blog.getpaint.net/2012/05/'>May 2012</a></li> <li><a href='https://blog.getpaint.net/2012/04/'>April 2012</a></li> <li><a href='https://blog.getpaint.net/2012/03/'>March 2012</a></li> <li><a href='https://blog.getpaint.net/2011/12/'>December 2011</a></li> <li><a href='https://blog.getpaint.net/2011/10/'>October 2011</a></li> <li><a href='https://blog.getpaint.net/2011/09/'>September 2011</a></li> <li><a href='https://blog.getpaint.net/2011/07/'>July 2011</a></li> <li><a href='https://blog.getpaint.net/2011/06/'>June 2011</a></li> <li><a href='https://blog.getpaint.net/2011/05/'>May 2011</a></li> <li><a href='https://blog.getpaint.net/2011/04/'>April 2011</a></li> <li><a href='https://blog.getpaint.net/2011/03/'>March 2011</a></li> <li><a href='https://blog.getpaint.net/2011/02/'>February 2011</a></li> <li><a href='https://blog.getpaint.net/2010/12/'>December 2010</a></li> <li><a href='https://blog.getpaint.net/2010/11/'>November 2010</a></li> <li><a href='https://blog.getpaint.net/2010/10/'>October 2010</a></li> <li><a href='https://blog.getpaint.net/2010/08/'>August 2010</a></li> <li><a href='https://blog.getpaint.net/2010/07/'>July 2010</a></li> <li><a href='https://blog.getpaint.net/2010/06/'>June 2010</a></li> <li><a href='https://blog.getpaint.net/2010/04/'>April 2010</a></li> <li><a href='https://blog.getpaint.net/2010/03/'>March 2010</a></li> <li><a href='https://blog.getpaint.net/2010/02/'>February 2010</a></li> <li><a href='https://blog.getpaint.net/2010/01/'>January 2010</a></li> <li><a href='https://blog.getpaint.net/2009/12/'>December 2009</a></li> <li><a href='https://blog.getpaint.net/2009/11/'>November 2009</a></li> <li><a href='https://blog.getpaint.net/2009/10/'>October 2009</a></li> <li><a href='https://blog.getpaint.net/2009/09/'>September 2009</a></li> <li><a href='https://blog.getpaint.net/2009/08/'>August 2009</a></li> <li><a href='https://blog.getpaint.net/2009/06/'>June 2009</a></li> <li><a href='https://blog.getpaint.net/2009/05/'>May 2009</a></li> <li><a href='https://blog.getpaint.net/2009/04/'>April 2009</a></li> <li><a href='https://blog.getpaint.net/2009/03/'>March 2009</a></li> <li><a href='https://blog.getpaint.net/2009/02/'>February 2009</a></li> <li><a href='https://blog.getpaint.net/2009/01/'>January 2009</a></li> <li><a href='https://blog.getpaint.net/2008/12/'>December 2008</a></li> <li><a href='https://blog.getpaint.net/2008/11/'>November 2008</a></li> <li><a href='https://blog.getpaint.net/2008/10/'>October 2008</a></li> <li><a href='https://blog.getpaint.net/2008/09/'>September 2008</a></li> <li><a href='https://blog.getpaint.net/2008/08/'>August 2008</a></li> <li><a href='https://blog.getpaint.net/2008/07/'>July 2008</a></li> <li><a href='https://blog.getpaint.net/2008/06/'>June 2008</a></li> <li><a href='https://blog.getpaint.net/2008/05/'>May 2008</a></li> <li><a href='https://blog.getpaint.net/2008/04/'>April 2008</a></li> <li><a href='https://blog.getpaint.net/2008/03/'>March 2008</a></li> <li><a href='https://blog.getpaint.net/2008/02/'>February 2008</a></li> <li><a href='https://blog.getpaint.net/2008/01/'>January 2008</a></li> <li><a href='https://blog.getpaint.net/2007/12/'>December 2007</a></li> <li><a href='https://blog.getpaint.net/2007/11/'>November 2007</a></li> <li><a href='https://blog.getpaint.net/2007/10/'>October 2007</a></li> <li><a href='https://blog.getpaint.net/2007/09/'>September 2007</a></li> <li><a href='https://blog.getpaint.net/2007/08/'>August 2007</a></li> <li><a href='https://blog.getpaint.net/2007/07/'>July 2007</a></li> <li><a href='https://blog.getpaint.net/2007/06/'>June 2007</a></li> <li><a href='https://blog.getpaint.net/2007/05/'>May 2007</a></li> </ul></aside> <div id="atatags-286348-674e9c5d203c1"></div> <script> __ATA.cmd.push(function() { __ATA.initDynamicSlot({ id: 'atatags-286348-674e9c5d203c1', location: 140, formFactor: '003', label: { text: 'Advertisements', }, creative: { reportAd: { text: 'Report this ad', }, privacySettings: { text: 'Privacy', } } }); }); </script> </div><!-- #secondary --> </div><!-- #content --> <footer id="colophon" class="site-footer"> <div class="site-info" role="contentinfo"> <a href="https://wordpress.com/?ref=footer_blog" rel="nofollow">Blog at WordPress.com.</a> </div><!-- .site-info --> </footer><!-- #colophon --> </div><!-- #page --> <script type="text/javascript"> var infiniteScroll = {"settings":{"id":"main","ajaxurl":"https:\/\/blog.getpaint.net\/?infinity=scrolling","type":"scroll","wrapper":true,"wrapper_class":"infinite-wrap","footer":"content","click_handle":"1","text":"Older posts","totop":"Scroll back to top","currentday":"17.10.24","order":"DESC","scripts":[],"styles":[],"google_analytics":false,"offset":1,"history":{"host":"blog.getpaint.net","path":"\/page\/%d\/","use_trailing_slashes":true,"parameters":""},"query_args":{"error":"","m":"","p":0,"post_parent":"","subpost":"","subpost_id":"","attachment":"","attachment_id":0,"name":"","pagename":"","page_id":0,"second":"","minute":"","hour":"","day":0,"monthnum":0,"year":0,"w":0,"category_name":"","tag":"","cat":"","tag_id":"","author":"","author_name":"","feed":"","tb":"","paged":0,"meta_key":"","meta_value":"","preview":"","s":"","sentence":"","title":"","fields":"","menu_order":"","embed":"","category__in":[],"category__not_in":[],"category__and":[],"post__in":[],"post__not_in":[],"post_name__in":[],"tag__in":[],"tag__not_in":[],"tag__and":[],"tag_slug__in":[],"tag_slug__and":[],"post_parent__in":[],"post_parent__not_in":[],"author__in":[],"author__not_in":[],"search_columns":[],"lazy_load_term_meta":false,"posts_per_page":10,"ignore_sticky_posts":false,"suppress_filters":false,"cache_results":true,"update_post_term_cache":true,"update_menu_item_cache":false,"update_post_meta_cache":true,"post_type":"","nopaging":false,"comments_per_page":"50","no_found_rows":false,"order":"DESC"},"query_before":"2024-12-02 21:51:25","last_post_date":"2024-10-17 16:49:13","body_class":"infinite-scroll neverending","loading_text":"Loading new page","stats":"blog=12948295&v=wpcom&tz=-7&user_id=0&subd=rickbrewster&x_pagetype=infinite"}}; </script> <!-- --> <script type="text/javascript" src="//0.gravatar.com/js/hovercards/hovercards.min.js?ver=202449b213a1cbb4e3271ca470eb7790af362ac2e18ce468f8945952c7bd3456d2132e" id="grofiles-cards-js"></script> <script type="text/javascript" id="wpgroho-js-extra"> /* <![CDATA[ */ var WPGroHo = {"my_hash":""}; /* ]]> */ </script> <script crossorigin='anonymous' type='text/javascript' src='https://s2.wp.com/wp-content/mu-plugins/gravatar-hovercards/wpgroho.js?m=1610363240i'></script> <script> // Initialize and attach hovercards to all gravatars ( function() { function init() { if ( typeof Gravatar === 'undefined' ) { return; } if ( typeof Gravatar.init !== 'function' ) { return; } Gravatar.profile_cb = function ( hash, id ) { WPGroHo.syncProfileData( hash, id ); }; Gravatar.my_hash = WPGroHo.my_hash; Gravatar.init( 'body', '#wp-admin-bar-my-account', { i18n: { 'Edit your profile →': 'Edit your profile →', 'View profile →': 'View profile →', 'Contact': 'Contact', 'Send money': 'Send money', 'Sorry, we are unable to load this Gravatar profile.': 'Sorry, we are unable to load this Gravatar profile.', 'Profile not found.': 'Profile not found.', 'Too Many Requests.': 'Too Many Requests.', 'Internal Server Error.': 'Internal Server Error.', }, } ); } if ( document.readyState !== 'loading' ) { init(); } else { document.addEventListener( 'DOMContentLoaded', init ); } } )(); </script> <div style="display:none"> </div> <div id="infinite-footer"> <div class="container"> <div class="blog-info"> <a id="infinity-blog-title" href="https://blog.getpaint.net/" rel="home"> paint.net blog </a> </div> <div class="blog-credits"> <a href="https://wordpress.com/?ref=footer_website" rel="nofollow">Create a free website or blog at WordPress.com.</a> </div> </div> </div><!-- #infinite-footer --> <script type="text/javascript"> ( function() { function init() { document.body.addEventListener( 'is.post-load', function() { if ( typeof __ATA.insertInlineAds === 'function' ) { __ATA.insertInlineAds(); } } ); } if ( document.readyState !== 'loading' ) { init(); } else { document.addEventListener( 'DOMContentLoaded', init ); } } )(); </script> <!-- CCPA [start] --> <script type="text/javascript"> ( function () { var setupPrivacy = function() { // Minimal Mozilla Cookie library // https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie/Simple_document.cookie_framework var cookieLib = window.cookieLib = {getItem:function(e){return e&&decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*"+encodeURIComponent(e).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"))||null},setItem:function(e,o,n,t,r,i){if(!e||/^(?:expires|max\-age|path|domain|secure)$/i.test(e))return!1;var c="";if(n)switch(n.constructor){case Number:c=n===1/0?"; expires=Fri, 31 Dec 9999 23:59:59 GMT":"; max-age="+n;break;case String:c="; expires="+n;break;case Date:c="; expires="+n.toUTCString()}return"rootDomain"!==r&&".rootDomain"!==r||(r=(".rootDomain"===r?".":"")+document.location.hostname.split(".").slice(-2).join(".")),document.cookie=encodeURIComponent(e)+"="+encodeURIComponent(o)+c+(r?"; domain="+r:"")+(t?"; path="+t:"")+(i?"; secure":""),!0}}; // Implement IAB USP API. window.__uspapi = function( command, version, callback ) { // Validate callback. if ( typeof callback !== 'function' ) { return; } // Validate the given command. if ( command !== 'getUSPData' || version !== 1 ) { callback( null, false ); return; } // Check for GPC. If set, override any stored cookie. if ( navigator.globalPrivacyControl ) { callback( { version: 1, uspString: '1YYN' }, true ); return; } // Check for cookie. var consent = cookieLib.getItem( 'usprivacy' ); // Invalid cookie. if ( null === consent ) { callback( null, false ); return; } // Everything checks out. Fire the provided callback with the consent data. callback( { version: 1, uspString: consent }, true ); }; // Initialization. document.addEventListener( 'DOMContentLoaded', function() { // Internal functions. var setDefaultOptInCookie = function() { var value = '1YNN'; var domain = '.wordpress.com' === location.hostname.slice( -14 ) ? '.rootDomain' : location.hostname; cookieLib.setItem( 'usprivacy', value, 365 * 24 * 60 * 60, '/', domain ); }; var setDefaultOptOutCookie = function() { var value = '1YYN'; var domain = '.wordpress.com' === location.hostname.slice( -14 ) ? '.rootDomain' : location.hostname; cookieLib.setItem( 'usprivacy', value, 24 * 60 * 60, '/', domain ); }; var setDefaultNotApplicableCookie = function() { var value = '1---'; var domain = '.wordpress.com' === location.hostname.slice( -14 ) ? '.rootDomain' : location.hostname; cookieLib.setItem( 'usprivacy', value, 24 * 60 * 60, '/', domain ); }; var setCcpaAppliesCookie = function( applies ) { var domain = '.wordpress.com' === location.hostname.slice( -14 ) ? '.rootDomain' : location.hostname; cookieLib.setItem( 'ccpa_applies', applies, 24 * 60 * 60, '/', domain ); } var maybeCallDoNotSellCallback = function() { if ( 'function' === typeof window.doNotSellCallback ) { return window.doNotSellCallback(); } return false; } // Look for usprivacy cookie first. var usprivacyCookie = cookieLib.getItem( 'usprivacy' ); // Found a usprivacy cookie. if ( null !== usprivacyCookie ) { // If the cookie indicates that CCPA does not apply, then bail. if ( '1---' === usprivacyCookie ) { return; } // CCPA applies, so call our callback to add Do Not Sell link to the page. maybeCallDoNotSellCallback(); // We're all done, no more processing needed. return; } // We don't have a usprivacy cookie, so check to see if we have a CCPA applies cookie. var ccpaCookie = cookieLib.getItem( 'ccpa_applies' ); // No CCPA applies cookie found, so we'll need to geolocate if this visitor is from California. // This needs to happen client side because we do not have region geo data in our $SERVER headers, // only country data -- therefore we can't vary cache on the region. if ( null === ccpaCookie ) { var request = new XMLHttpRequest(); request.open( 'GET', 'https://public-api.wordpress.com/geo/', true ); request.onreadystatechange = function () { if ( 4 === this.readyState ) { if ( 200 === this.status ) { // Got a geo response. Parse out the region data. var data = JSON.parse( this.response ); var region = data.region ? data.region.toLowerCase() : ''; var ccpa_applies = ['california', 'colorado', 'connecticut', 'delaware', 'indiana', 'iowa', 'montana', 'new jersey', 'oregon', 'tennessee', 'texas', 'utah', 'virginia'].indexOf( region ) > -1; // Set CCPA applies cookie. This keeps us from having to make a geo request too frequently. setCcpaAppliesCookie( ccpa_applies ); // Check if CCPA applies to set the proper usprivacy cookie. if ( ccpa_applies ) { if ( maybeCallDoNotSellCallback() ) { // Do Not Sell link added, so set default opt-in. setDefaultOptInCookie(); } else { // Failed showing Do Not Sell link as required, so default to opt-OUT just to be safe. setDefaultOptOutCookie(); } } else { // CCPA does not apply. setDefaultNotApplicableCookie(); } } else { // Could not geo, so let's assume for now that CCPA applies to be safe. setCcpaAppliesCookie( true ); if ( maybeCallDoNotSellCallback() ) { // Do Not Sell link added, so set default opt-in. setDefaultOptInCookie(); } else { // Failed showing Do Not Sell link as required, so default to opt-OUT just to be safe. setDefaultOptOutCookie(); } } } }; // Send the geo request. request.send(); } else { // We found a CCPA applies cookie. if ( ccpaCookie === 'true' ) { if ( maybeCallDoNotSellCallback() ) { // Do Not Sell link added, so set default opt-in. setDefaultOptInCookie(); } else { // Failed showing Do Not Sell link as required, so default to opt-OUT just to be safe. setDefaultOptOutCookie(); } } else { // CCPA does not apply. setDefaultNotApplicableCookie(); } } } ); }; // Kickoff initialization. if ( window.defQueue && defQueue.isLOHP && defQueue.isLOHP === 2020 ) { defQueue.items.push( setupPrivacy ); } else { setupPrivacy(); } } )(); </script> <!-- CCPA [end] --> <div class="widget widget_eu_cookie_law_widget"> <div class="hide-on-button ads-active" data-hide-timeout="30" data-consent-expiration="180" id="eu-cookie-law" style="display: none" > <form method="post"> <input type="submit" value="Close and accept" class="accept" /> Privacy & Cookies: This site uses cookies. By continuing to use this website, you agree to their use. <br /> To find out more, including how to control cookies, see here: <a href="https://automattic.com/cookies/" rel="nofollow"> Cookie Policy </a> </form> </div> </div> <div id="actionbar" style="display: none;" class="actnbr-pub-sela actnbr-has-follow"> <ul> <li class="actnbr-btn actnbr-hidden"> <a class="actnbr-action actnbr-actn-follow " href=""> <svg class="gridicon" height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path clip-rule="evenodd" d="m4 4.5h12v6.5h1.5v-6.5-1.5h-1.5-12-1.5v1.5 10.5c0 1.1046.89543 2 2 2h7v-1.5h-7c-.27614 0-.5-.2239-.5-.5zm10.5 2h-9v1.5h9zm-5 3h-4v1.5h4zm3.5 1.5h-1v1h1zm-1-1.5h-1.5v1.5 1 1.5h1.5 1 1.5v-1.5-1-1.5h-1.5zm-2.5 2.5h-4v1.5h4zm6.5 1.25h1.5v2.25h2.25v1.5h-2.25v2.25h-1.5v-2.25h-2.25v-1.5h2.25z" fill-rule="evenodd"></path></svg> <span>Subscribe</span> </a> <a class="actnbr-action actnbr-actn-following no-display" href=""> <svg class="gridicon" height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill-rule="evenodd" clip-rule="evenodd" d="M16 4.5H4V15C4 15.2761 4.22386 15.5 4.5 15.5H11.5V17H4.5C3.39543 17 2.5 16.1046 2.5 15V4.5V3H4H16H17.5V4.5V12.5H16V4.5ZM5.5 6.5H14.5V8H5.5V6.5ZM5.5 9.5H9.5V11H5.5V9.5ZM12 11H13V12H12V11ZM10.5 9.5H12H13H14.5V11V12V13.5H13H12H10.5V12V11V9.5ZM5.5 12H9.5V13.5H5.5V12Z" fill="#008A20"></path><path class="following-icon-tick" d="M13.5 16L15.5 18L19 14.5" stroke="#008A20" stroke-width="1.5"></path></svg> <span>Subscribed</span> </a> <div class="actnbr-popover tip tip-top-left actnbr-notice" id="follow-bubble"> <div class="tip-arrow"></div> <div class="tip-inner actnbr-follow-bubble"> <ul> <li class="actnbr-sitename"> <a href="https://blog.getpaint.net"> <img loading='lazy' alt='' src='https://blog.getpaint.net/wp-content/uploads/2019/02/paintdotnet.256.png?w=50' srcset='https://blog.getpaint.net/wp-content/uploads/2019/02/paintdotnet.256.png?w=50 1x, https://blog.getpaint.net/wp-content/uploads/2019/02/paintdotnet.256.png?w=75 1.5x, https://blog.getpaint.net/wp-content/uploads/2019/02/paintdotnet.256.png?w=100 2x, https://blog.getpaint.net/wp-content/uploads/2019/02/paintdotnet.256.png?w=150 3x, https://blog.getpaint.net/wp-content/uploads/2019/02/paintdotnet.256.png?w=200 4x' class='avatar avatar-50' height='50' width='50' /> paint.net blog </a> </li> <div class="actnbr-message no-display"></div> <form method="post" action="https://subscribe.wordpress.com" accept-charset="utf-8" style="display: none;"> <div class="actnbr-follow-count">Join 456 other subscribers</div> <div> <input type="email" name="email" placeholder="Enter your email address" class="actnbr-email-field" aria-label="Enter your email address" /> </div> <input type="hidden" name="action" value="subscribe" /> <input type="hidden" name="blog_id" value="12948295" /> <input type="hidden" name="source" value="https://blog.getpaint.net/" /> <input type="hidden" name="sub-type" value="actionbar-follow" /> <input type="hidden" id="_wpnonce" name="_wpnonce" value="2e682936be" /> <div class="actnbr-button-wrap"> <button type="submit" value="Sign me up"> Sign me up </button> </div> </form> <li class="actnbr-login-nudge"> <div> Already have a WordPress.com account? <a href="https://wordpress.com/log-in?redirect_to=https%3A%2F%2Fr-login.wordpress.com%2Fremote-login.php%3Faction%3Dlink%26back%3Dhttps%253A%252F%252Fblog.getpaint.net%252F2024%252F12%252F01%252Fpaint-net-5-1-1-beta-build-9102%252F">Log in now.</a> </div> </li> </ul> </div> </div> </li> <li class="actnbr-ellipsis actnbr-hidden"> <svg class="gridicon gridicons-ellipsis" height="24" width="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g><path d="M7 12c0 1.104-.896 2-2 2s-2-.896-2-2 .896-2 2-2 2 .896 2 2zm12-2c-1.104 0-2 .896-2 2s.896 2 2 2 2-.896 2-2-.896-2-2-2zm-7 0c-1.104 0-2 .896-2 2s.896 2 2 2 2-.896 2-2-.896-2-2-2z"/></g></svg> <div class="actnbr-popover tip tip-top-left actnbr-more"> <div class="tip-arrow"></div> <div class="tip-inner"> <ul> <li class="actnbr-sitename"> <a href="https://blog.getpaint.net"> <img loading='lazy' alt='' src='https://blog.getpaint.net/wp-content/uploads/2019/02/paintdotnet.256.png?w=50' srcset='https://blog.getpaint.net/wp-content/uploads/2019/02/paintdotnet.256.png?w=50 1x, https://blog.getpaint.net/wp-content/uploads/2019/02/paintdotnet.256.png?w=75 1.5x, https://blog.getpaint.net/wp-content/uploads/2019/02/paintdotnet.256.png?w=100 2x, https://blog.getpaint.net/wp-content/uploads/2019/02/paintdotnet.256.png?w=150 3x, https://blog.getpaint.net/wp-content/uploads/2019/02/paintdotnet.256.png?w=200 4x' class='avatar avatar-50' height='50' width='50' /> paint.net blog </a> </li> <li class="actnbr-folded-customize"> <a href="https://rickbrewster.wordpress.com/wp-admin/customize.php?url=https%3A%2F%2Frickbrewster.wordpress.com%2F"> <svg class="gridicon gridicons-customize" height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g><path d="M2 6c0-1.505.78-3.08 2-4 0 .845.69 2 2 2 1.657 0 3 1.343 3 3 0 .386-.08.752-.212 1.09.74.594 1.476 1.19 2.19 1.81L8.9 11.98c-.62-.716-1.214-1.454-1.807-2.192C6.753 9.92 6.387 10 6 10c-2.21 0-4-1.79-4-4zm12.152 6.848l1.34-1.34c.607.304 1.283.492 2.008.492 2.485 0 4.5-2.015 4.5-4.5 0-.725-.188-1.4-.493-2.007L18 9l-2-2 3.507-3.507C18.9 3.188 18.225 3 17.5 3 15.015 3 13 5.015 13 7.5c0 .725.188 1.4.493 2.007L3 20l2 2 6.848-6.848c1.885 1.928 3.874 3.753 5.977 5.45l1.425 1.148 1.5-1.5-1.15-1.425c-1.695-2.103-3.52-4.092-5.448-5.977z"/></g></svg> <span>Customize</span> </a> </li> <li class="actnbr-folded-follow"> <a class="actnbr-action actnbr-actn-follow " href=""> <svg class="gridicon" height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path clip-rule="evenodd" d="m4 4.5h12v6.5h1.5v-6.5-1.5h-1.5-12-1.5v1.5 10.5c0 1.1046.89543 2 2 2h7v-1.5h-7c-.27614 0-.5-.2239-.5-.5zm10.5 2h-9v1.5h9zm-5 3h-4v1.5h4zm3.5 1.5h-1v1h1zm-1-1.5h-1.5v1.5 1 1.5h1.5 1 1.5v-1.5-1-1.5h-1.5zm-2.5 2.5h-4v1.5h4zm6.5 1.25h1.5v2.25h2.25v1.5h-2.25v2.25h-1.5v-2.25h-2.25v-1.5h2.25z" fill-rule="evenodd"></path></svg> <span>Subscribe</span> </a> <a class="actnbr-action actnbr-actn-following no-display" href=""> <svg class="gridicon" height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill-rule="evenodd" clip-rule="evenodd" d="M16 4.5H4V15C4 15.2761 4.22386 15.5 4.5 15.5H11.5V17H4.5C3.39543 17 2.5 16.1046 2.5 15V4.5V3H4H16H17.5V4.5V12.5H16V4.5ZM5.5 6.5H14.5V8H5.5V6.5ZM5.5 9.5H9.5V11H5.5V9.5ZM12 11H13V12H12V11ZM10.5 9.5H12H13H14.5V11V12V13.5H13H12H10.5V12V11V9.5ZM5.5 12H9.5V13.5H5.5V12Z" fill="#008A20"></path><path class="following-icon-tick" d="M13.5 16L15.5 18L19 14.5" stroke="#008A20" stroke-width="1.5"></path></svg> <span>Subscribed</span> </a> </li> <li class="actnbr-signup"><a href="https://wordpress.com/start/">Sign up</a></li> <li class="actnbr-login"><a href="https://wordpress.com/log-in?redirect_to=https%3A%2F%2Fr-login.wordpress.com%2Fremote-login.php%3Faction%3Dlink%26back%3Dhttps%253A%252F%252Fblog.getpaint.net%252F2024%252F12%252F01%252Fpaint-net-5-1-1-beta-build-9102%252F">Log in</a></li> <li class="flb-report"> <a href="https://wordpress.com/abuse/?report_url=https://blog.getpaint.net" target="_blank" rel="noopener noreferrer"> Report this content </a> </li> <li class="actnbr-reader"> <a href="https://wordpress.com/read/feeds/92711"> View site in Reader </a> </li> <li class="actnbr-subs"> <a href="https://subscribe.wordpress.com/">Manage subscriptions</a> </li> <li class="actnbr-fold"><a href="">Collapse this bar</a></li> </ul> </div> </div> </li> </ul> </div> <script> window.addEventListener( "load", function( event ) { var link = document.createElement( "link" ); link.href = "https://s0.wp.com/wp-content/mu-plugins/actionbar/actionbar.css?v=20241015"; link.type = "text/css"; link.rel = "stylesheet"; document.head.appendChild( link ); var script = document.createElement( "script" ); script.src = "https://s0.wp.com/wp-content/mu-plugins/actionbar/actionbar.js?v=20231122"; script.defer = true; document.body.appendChild( script ); } ); </script> <div id="jp-carousel-loading-overlay"> <div id="jp-carousel-loading-wrapper"> <span id="jp-carousel-library-loading"> </span> </div> </div> <div class="jp-carousel-overlay" style="display: none;"> <div class="jp-carousel-container"> <!-- The Carousel Swiper --> <div class="jp-carousel-wrap swiper-container jp-carousel-swiper-container jp-carousel-transitions" itemscope itemtype="https://schema.org/ImageGallery"> <div class="jp-carousel swiper-wrapper"></div> <div class="jp-swiper-button-prev swiper-button-prev"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <mask id="maskPrev" mask-type="alpha" maskUnits="userSpaceOnUse" x="8" y="6" width="9" height="12"> <path d="M16.2072 16.59L11.6496 12L16.2072 7.41L14.8041 6L8.8335 12L14.8041 18L16.2072 16.59Z" fill="white"/> </mask> <g mask="url(#maskPrev)"> <rect x="0.579102" width="23.8823" height="24" fill="#FFFFFF"/> </g> </svg> </div> <div class="jp-swiper-button-next swiper-button-next"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <mask id="maskNext" mask-type="alpha" maskUnits="userSpaceOnUse" x="8" y="6" width="8" height="12"> <path d="M8.59814 16.59L13.1557 12L8.59814 7.41L10.0012 6L15.9718 12L10.0012 18L8.59814 16.59Z" fill="white"/> </mask> <g mask="url(#maskNext)"> <rect x="0.34375" width="23.8822" height="24" fill="#FFFFFF"/> </g> </svg> </div> </div> <!-- The main close buton --> <div class="jp-carousel-close-hint"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <mask id="maskClose" mask-type="alpha" maskUnits="userSpaceOnUse" x="5" y="5" width="15" height="14"> <path d="M19.3166 6.41L17.9135 5L12.3509 10.59L6.78834 5L5.38525 6.41L10.9478 12L5.38525 17.59L6.78834 19L12.3509 13.41L17.9135 19L19.3166 17.59L13.754 12L19.3166 6.41Z" fill="white"/> </mask> <g mask="url(#maskClose)"> <rect x="0.409668" width="23.8823" height="24" fill="#FFFFFF"/> </g> </svg> </div> <!-- Image info, comments and meta --> <div class="jp-carousel-info"> <div class="jp-carousel-info-footer"> <div class="jp-carousel-pagination-container"> <div class="jp-swiper-pagination swiper-pagination"></div> <div class="jp-carousel-pagination"></div> </div> <div class="jp-carousel-photo-title-container"> <h2 class="jp-carousel-photo-caption"></h2> </div> <div class="jp-carousel-photo-icons-container"> <a href="#" class="jp-carousel-icon-btn jp-carousel-icon-info" aria-label="Toggle photo metadata visibility"> <span class="jp-carousel-icon"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <mask id="maskInfo" mask-type="alpha" maskUnits="userSpaceOnUse" x="2" y="2" width="21" height="20"> <path fill-rule="evenodd" clip-rule="evenodd" d="M12.7537 2C7.26076 2 2.80273 6.48 2.80273 12C2.80273 17.52 7.26076 22 12.7537 22C18.2466 22 22.7046 17.52 22.7046 12C22.7046 6.48 18.2466 2 12.7537 2ZM11.7586 7V9H13.7488V7H11.7586ZM11.7586 11V17H13.7488V11H11.7586ZM4.79292 12C4.79292 16.41 8.36531 20 12.7537 20C17.142 20 20.7144 16.41 20.7144 12C20.7144 7.59 17.142 4 12.7537 4C8.36531 4 4.79292 7.59 4.79292 12Z" fill="white"/> </mask> <g mask="url(#maskInfo)"> <rect x="0.8125" width="23.8823" height="24" fill="#FFFFFF"/> </g> </svg> </span> </a> <a href="#" class="jp-carousel-icon-btn jp-carousel-icon-comments" aria-label="Toggle photo comments visibility"> <span class="jp-carousel-icon"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <mask id="maskComments" mask-type="alpha" maskUnits="userSpaceOnUse" x="2" y="2" width="21" height="20"> <path fill-rule="evenodd" clip-rule="evenodd" d="M4.3271 2H20.2486C21.3432 2 22.2388 2.9 22.2388 4V16C22.2388 17.1 21.3432 18 20.2486 18H6.31729L2.33691 22V4C2.33691 2.9 3.2325 2 4.3271 2ZM6.31729 16H20.2486V4H4.3271V18L6.31729 16Z" fill="white"/> </mask> <g mask="url(#maskComments)"> <rect x="0.34668" width="23.8823" height="24" fill="#FFFFFF"/> </g> </svg> <span class="jp-carousel-has-comments-indicator" aria-label="This image has comments."></span> </span> </a> </div> </div> <div class="jp-carousel-info-extra"> <div class="jp-carousel-info-content-wrapper"> <div class="jp-carousel-photo-title-container"> <h2 class="jp-carousel-photo-title"></h2> </div> <div class="jp-carousel-comments-wrapper"> <div id="jp-carousel-comments-loading"> <span>Loading Comments...</span> </div> <div class="jp-carousel-comments"></div> <div id="jp-carousel-comment-form-container"> <span id="jp-carousel-comment-form-spinner"> </span> <div id="jp-carousel-comment-post-results"></div> <form id="jp-carousel-comment-form"> <label for="jp-carousel-comment-form-comment-field" class="screen-reader-text">Write a Comment...</label> <textarea name="comment" class="jp-carousel-comment-form-field jp-carousel-comment-form-textarea" id="jp-carousel-comment-form-comment-field" placeholder="Write a Comment..." ></textarea> <div id="jp-carousel-comment-form-submit-and-info-wrapper"> <div id="jp-carousel-comment-form-commenting-as"> <fieldset> <label for="jp-carousel-comment-form-email-field">Email (Required)</label> <input type="text" name="email" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-email-field" /> </fieldset> <fieldset> <label for="jp-carousel-comment-form-author-field">Name (Required)</label> <input type="text" name="author" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-author-field" /> </fieldset> <fieldset> <label for="jp-carousel-comment-form-url-field">Website</label> <input type="text" name="url" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-url-field" /> </fieldset> </div> <input type="submit" name="submit" class="jp-carousel-comment-form-button" id="jp-carousel-comment-form-button-submit" value="Post Comment" /> </div> </form> </div> </div> <div class="jp-carousel-image-meta"> <div class="jp-carousel-title-and-caption"> <div class="jp-carousel-photo-info"> <h3 class="jp-carousel-caption" itemprop="caption description"></h3> </div> <div class="jp-carousel-photo-description"></div> </div> <ul class="jp-carousel-image-exif" style="display: none;"></ul> <a class="jp-carousel-image-download" href="#" target="_blank" style="display: none;"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <mask id="mask0" mask-type="alpha" maskUnits="userSpaceOnUse" x="3" y="3" width="19" height="18"> <path fill-rule="evenodd" clip-rule="evenodd" d="M5.84615 5V19H19.7775V12H21.7677V19C21.7677 20.1 20.8721 21 19.7775 21H5.84615C4.74159 21 3.85596 20.1 3.85596 19V5C3.85596 3.9 4.74159 3 5.84615 3H12.8118V5H5.84615ZM14.802 5V3H21.7677V10H19.7775V6.41L9.99569 16.24L8.59261 14.83L18.3744 5H14.802Z" fill="white"/> </mask> <g mask="url(#mask0)"> <rect x="0.870605" width="23.8823" height="24" fill="#FFFFFF"/> </g> </svg> <span class="jp-carousel-download-text"></span> </a> <div class="jp-carousel-image-map" style="display: none;"></div> </div> </div> </div> </div> </div> </div> <link crossorigin='anonymous' rel='stylesheet' id='all-css-0-2' href='https://s2.wp.com/_static/??-eJydzEEKwyAQheEL1Q5JocFFyFmsDkEzjuI4hNy+FJptFln+j8cHezW+cEfukNVU0jWyQMJend/+DaIMuQQlFPCuFRUkkD1WbOajHAifXuQB97Hzcw43vR4Jg1kdEbbjqn7+kufhbUc7vYZxSl9CS2RI&cssminify=yes' type='text/css' media='all' /> <script type="text/javascript" id="jetpack-carousel-js-extra"> /* <![CDATA[ */ var jetpackSwiperLibraryPath = {"url":"https:\/\/s2.wp.com\/wp-content\/mu-plugins\/jetpack-plugin\/sun\/_inc\/build\/carousel\/swiper-bundle.min.js"}; var jetpackCarouselStrings = {"widths":[370,700,1000,1200,1400,2000],"is_logged_in":"","lang":"en","ajaxurl":"https:\/\/blog.getpaint.net\/wp-admin\/admin-ajax.php","nonce":"799a50dc2a","display_exif":"1","display_comments":"1","single_image_gallery":"1","single_image_gallery_media_file":"","background_color":"black","comment":"Comment","post_comment":"Post Comment","write_comment":"Write a Comment...","loading_comments":"Loading Comments...","image_label":"Open image in full-screen.","download_original":"View full size <span class=\"photo-size\">{0}<span class=\"photo-size-times\">\u00d7<\/span>{1}<\/span>","no_comment_text":"Please be sure to submit some text with your comment.","no_comment_email":"Please provide an email address to comment.","no_comment_author":"Please provide your name to comment.","comment_post_error":"Sorry, but there was an error posting your comment. Please try again later.","comment_approved":"Your comment was approved.","comment_unapproved":"Your comment is in moderation.","camera":"Camera","aperture":"Aperture","shutter_speed":"Shutter Speed","focal_length":"Focal Length","copyright":"Copyright","comment_registration":"0","require_name_email":"1","login_url":"https:\/\/rickbrewster.wordpress.com\/wp-login.php?redirect_to=https%3A%2F%2Fblog.getpaint.net%2F2024%2F10%2F17%2Fpaint-net-5-1-beta-build-9056%2F","blog_id":"12948295","meta_data":["camera","aperture","shutter_speed","focal_length","copyright"],"stats_query_args":"blog=12948295&v=wpcom&tz=-7&user_id=0&subd=rickbrewster","is_public":"1"}; /* ]]> */ </script> <script crossorigin='anonymous' type='text/javascript' src='https://s0.wp.com/_static/??-eJydUttOwzAM/SG8MBWEeEB8CkpTN7h1Lqqdhf09mUQBVWhUe4qOcy62E1MzuBQVo5pJTEg9MUIRXKxvNaA4psMkd+YXr+fkIXPxFMXUtAx2EHBsRVAuJtUqbzWh/Cho8KhisLTbNBMC22oUQ2aruKlf8ZlQs3XzFzZSonmj6ExfiAfTGqdIiiBuScwrPh8Cxa2pvmNowbn0RpDtZYZoT+StUtpDlpkyMMUZxuSKwEgfe1TtvGE8raSKCygFbJl484acXVJ7aP6mrYW/VrTbVdv/GcBbZlzO19A/KWszULNLYQOb7jW8HJ+640N33z0+T5/bZArW'></script> <script type="text/javascript"> (function () { var wpcom_reblog = { source: 'toolbar', toggle_reblog_box_flair: function (obj_id, post_id) { // Go to site selector. This will redirect to their blog if they only have one. const postEndpoint = `https://wordpress.com/post`; // Ideally we would use the permalink here, but fortunately this will be replaced with the // post permalink in the editor. const originalURL = `${ document.location.href }?page_id=${ post_id }`; const url = postEndpoint + '?url=' + encodeURIComponent( originalURL ) + '&is_post_share=true' + '&v=5'; const redirect = function () { if ( ! window.open( url, '_blank' ) ) { location.href = url; } }; if ( /Firefox/.test( navigator.userAgent ) ) { setTimeout( redirect, 0 ); } else { redirect(); } }, }; window.wpcom_reblog = wpcom_reblog; })(); </script> <script type="text/javascript"> // <![CDATA[ (function() { try{ if ( window.external &&'msIsSiteMode' in window.external) { if (window.external.msIsSiteMode()) { var jl = document.createElement('script'); jl.type='text/javascript'; jl.async=true; jl.src='/wp-content/plugins/ie-sitemode/custom-jumplist.php'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(jl, s); } } }catch(e){} })(); // ]]> </script> <script type="text/javascript"> (function() { var extend = function(out) { out = out || {}; for (var i = 1; i < arguments.length; i++) { if (!arguments[i]) continue; for (var key in arguments[i]) { if (arguments[i].hasOwnProperty(key)) out[key] = arguments[i][key]; } } return out; }; extend( window.infiniteScroll.settings.scripts, ["jetpack-mu-wpcom-settings","rlt-proxy","jquery-core","jquery-migrate","jquery","cmp-script-stub","wpcom-actionbar-placeholder","grofiles-cards","wpgroho","mobile-useragent-info","wordads-smart","eu-cookie-law-script","the-neverending-homepage","sela-navigation","sela-skip-link-focus-fix","sela-script","jetpack-twitter-timeline","jetpack-carousel","tiled-gallery","carousel-wpcom"] ); extend( window.infiniteScroll.settings.styles, ["wordads-global","eu-cookie-law-style","the-neverending-homepage","wp-block-library","jetpack-layout-grid","jetpack-ratings","mediaelement","wp-mediaelement","coblocks-frontend","wpcom-core-compat-playlist-styles","wpcom-bbpress2-staff-css","genericons","sela-style","sela-wpcom","reblogging","geo-location-flair","a8c-global-print","h4-global","wp-emoji-styles","videopress-video-style","jetpack-sharing-buttons-style","classic-theme-styles","global-styles","sela-fonts","jetpack-global-styles-frontend-style","jetpack-carousel-swiper-css","jetpack-carousel","tiled-gallery","core-block-supports-duotone"] ); })(); </script> <span id="infinite-aria" aria-live="polite"></span> <script src="//stats.wp.com/w.js?67" defer></script> <script type="text/javascript"> _tkq = window._tkq || []; _stq = window._stq || []; _tkq.push(['storeContext', {'blog_id':'12948295','blog_tz':'-7','user_lang':'en','blog_lang':'en','user_id':'0'}]); _stq.push(['view', {'blog':'12948295','v':'wpcom','tz':'-7','user_id':'0','subd':'rickbrewster'}]); _stq.push(['extra', {'crypt':'UE5XaGUuOTlwaD85flAmcm1mcmZsaDhkV11YdWtpP0NsWnVkPS9sL0ViLndld3BsSjRjQ0FmMWk0bjhwYkI9bVh4bTM3ZU5oUj1jenJXRjNWQnFhUHZdNmQ2M1RKXWdEemRMPTVCLD1UfFptOT85LVI0bG1tLzZTJlJQTW81fnIsaGlHc0RDc1BfZjM5TS9MP0JoWiwtW1dnampaLGpIZ1BXdm4yeDFdOTFrXU50dmZZQ2VfP2RSZUd2QUJYR1IubGZ1W2Mrcz1DTD0tYUNTdiV8K2V6NUhCQjVraHpmMktnLjFSR25LfkdfR2JyJltMRD0yNmVITlM2em9iaC4xKzdfTXo0K3hrMzZCZWVPNDZIJkVvU081LXQ9S115d0pM'}]); _stq.push([ 'clickTrackerInit', '12948295', '0' ]); </script> <noscript><img src="https://pixel.wp.com/b.gif?v=noscript" style="height:1px;width:1px;overflow:hidden;position:absolute;bottom:1px;" alt="" /></noscript> <script defer id="bilmur" data-customproperties="{"enq_jquery":"1","logged_in":"0","wptheme":"pub\/sela","wptheme_is_block":"0"}" data-provider="wordpress.com" data-service="simple" src="/wp-content/js/bilmur.min.js?i=12&m=202449"></script><script defer id="bilmur" data-customproperties="{"enq_jquery":"1","logged_in":"0","wptheme":"pub\/sela","wptheme_is_block":"0"}" data-provider="wordpress.com" data-service="simple" src="/wp-content/js/bilmur-4.min.js?i=12&m=202449"></script><script> ( function() { function getMobileUserAgentInfo() { if ( typeof wpcom_mobile_user_agent_info === 'object' ) { wpcom_mobile_user_agent_info.init(); var mobileStatsQueryString = ''; if ( wpcom_mobile_user_agent_info.matchedPlatformName !== false ) { mobileStatsQueryString += '&x_' + 'mobile_platforms' + '=' + wpcom_mobile_user_agent_info.matchedPlatformName; } if ( wpcom_mobile_user_agent_info.matchedUserAgentName !== false ) { mobileStatsQueryString += '&x_' + 'mobile_devices' + '=' + wpcom_mobile_user_agent_info.matchedUserAgentName; } if ( wpcom_mobile_user_agent_info.isIPad() ) { mobileStatsQueryString += '&x_' + 'ipad_views' + '=' + 'views'; } if ( mobileStatsQueryString != '' ) { new Image().src = document.location.protocol + '//pixel.wp.com/g.gif?v=wpcom-no-pv' + mobileStatsQueryString + '&baba=' + Math.random(); } } } document.addEventListener( 'DOMContentLoaded', getMobileUserAgentInfo ); } )(); </script> </body> </html> <!-- generated in 0.148 seconds 156499 bytes batcached for 300 seconds -->