Hardware vs Software Monitor Calibration

Monitor calibration produces a set of curves, one for each of the three color channels. These curves are responsible for bending and twisting the device’s native color to reach our calibration goal. Where these curves are stored is a main differentiator between regular and so-called “hardware-calibrated” monitors.

Regular monitors depend on the computer’s video chip to store the curves. Hardware-calibrated monitors store the curves inside the monitor’s look-up table (LUT).


Above are the calibration curves for my current setup as shown by the ColorEyes Display Pro calibration software. On the left are the curves for my Retina MacBook Pro’s internal display; while on the right are the curves for the EIZO CG241W monitor. Note that this software puts the curves either in the video LUT or in the monitor LUT – but not both. Other packages, such as basICColor Display tend to utilize both for hardware-calibrated monitors.

While the video card stores these curves at 8-bit, my EIZO’s internal curves are at 12-bit. At higher bit depth calibration is more precise and virtually eliminates color banding and seepage. Hardware-calibrated monitors also store the curves permanently (of course until the next calibration).

Calibration software loads the video LUT as part of the calibration process. But what happens if the computer is rebooted or turned off and on again on the next day? Unfortunately video card hardware does not store and automatically re-apply calibration curves on startup. So the question remains: where to store them and who will reload them?

Apple invented a fairly obvious solution to answer this question: embed calibration curves into the display’s ICC profile. This way they could be handled together as a single entity. Because the ICC profile specification does not provide any storage space for calibration data, Apple had created a new profile tag, the infamous video card gamma table (VCGT). To complete their solution ColorSync loads these curves when needed. Calibration packages also support this by embedding newly computed calibration curves into the profiles they create.

Windows 7 and above also sports a video card LUT auto-loading feature, but it isn’t as obvious as on a Mac. I would recommend reading my old post about the topic.

In the next installment of my monitor calibration series I’ll talk about what can one reasonably expect from proper calibration and profiling.

Keeping OS X Display Brightness Unchanged

In the previous installment in my monitor calibration series, I mentioned the need to keep monitor brightness unchanged after calibration – as any change to it invalidates the profile.

But what if I press the brightness control buttons on the Retina MacBook Pro (or on any other MacBook)? Should I immediately re-calibrate and re-profile? Well, there’s a slick trick.

MacBookBrightnessControl2MacBook display brightness is changed by default in whole unit steps using the brightness keys. But holding down Shift + Option while pressing the keys will change it to 1/4 unit steps – the same amount ColorEyes Display Pro (and other software) uses when controlling the display.

What I usually do after calibration and profiling is: increase the brightness by 1/4 unit, take note of the (previous) value, and immediately decrease it back to where the software set it. This way I could return the display to the calibrated state even if I had to change, or accidentally changed its brightness.

Another enemy of keeping the calibration intact is the display dimming preference of OS X – which tells the machine to slightly dim the display while running off of batteries. It might be useful for users not requiring color accuracy and consistency, but turn it off for calibrated displays (by default it’s on).


In the next installment I’ll examine the differences between hardware and software calibration.

Escaping Forward

When the iPhone 6 and 6 Plus arrived this fall, we had to make a choice. A choice about how we are going to support these phones with the Mark II Artist’s Viewfinder. We had two paths in front of us. An easy one, where we just measure the new phones, add them to the app’s database, but leave the app built with the iOS 7 SDK not caring about how it looks like on the bigger screens – this is the path some of our competitors took. Or a harder one, with adding full support for the larger screens as well as first-class iOS 8 support. We are not fans of half-baked ugly solutions, so of course we took the harder path.

Well, this proved to be a rather challenging one… Due to the ill-fated launch of iOS 8 (and 8.0.1 and 8.0.2), we also decided to fully support iOS 7.1 along the new OS. To work with larger iPhone screens, Apple completely revamped screen layout for iOS 8. Working with the sometimes contradicting requirements of the two OS generations was a time consuming puzzle to solve. We had to employ some pretty neat techniques, such as self-modifying code, and do tons of trial and error testing. After a couple of weeks of hard work, finally we had modified our internal frameworks to work smoothly with both OS version. But then, another monster reared his ugly head.

Previously we relied on the iPhone simulation on iPads. It’s completely broken on iOS 8, however. From erratically rotating status bars to half of keyboards laid out in the middle of the screen. At this point, we had to revisit our previous decision. But we strongly think that the easy path is not a real option, and this left only one possible solution. Escaping forward, and adding first-class iPad support.

We had to evaluate iPad user interface alternatives and design in general, as well as modifications of our frameworks to cope with even larger screens (some groundwork needed for this was already done because of iPhone 6). We spent another couple of weeks on this, but actually we had plenty of time as we were waiting for our iPhone 6 and 6 Plus to be delivered (operating in Hungary has a major drawback – new iPhones were only available from the beginning of November, plus add a week or two for shipping).

The result of these exercises is something I still find a great achievement: design and code that works equally well regardless of the screen size. We have even added support for non-Retina displays on the iPad 2 and original iPad mini. What this means to you? A single, universal app that supports both iPhones and iPads for $25. Some of our competitors sell two different iPad and iPhone apps, and you have to shell out $60 in total for those.

Below is a screen shot showing the iPad screen. I’m biased, but the app is a sheer joy to use on my iPad mini 3.


You may notice two things on the screen shot. First, we have full wide converter support now on iPads. My favorite here is the Schneider iPro Super Wide with its easy-to use but stable clip. Second is that frame lines are somewhat thicker than on the iPhone version.

Actually we have a new setting in the menu to control frame line thickness. You can choose from thin, medium and thick line widths. Thin is the thinnest line possible on Retina displays (and the default, or what you had in previous versions). On non-Retina iPads that we support thickness defaults to medium (and is not changeable).

These new features will be available in version 4.0 shortly. It’s already submitted for review to the App Store, and will be released as soon as Apple approves the update. The update will be free for existing Mark II Artist’s Viewfinder owners. For users of older Viewfinder Basic/Pro/Cine apps we are providing upgrades through upgrade bundles.

Upgrading to Photoshop CC

I have been a Creative Cloud subscriber for more than a year. I think it’s a great licensing construct for my business. So I was eagerly awaiting the current CC release (I use Photoshop, Illustrator and InDesign) all day yesterday. No luck. Then this morning Application Manager showed that I have some updates!

This isn’t an upgrade

Actually Photoshop CC is not an upgrade. Not even for existing CC subscribers. That means that Application Manager will install it side-by-side with CS6, leaving all CS6 stuff intact. On first startup I was asked whether I want my actions and stuff imported. I definitely wanted to do this! The good news is PSCC was able to successfully import all my actions and workspaces.

App settings (including color settings) were left in the dust, however. I had to manually set up everything from memory configuration to cursors – which is a royal pain in the butt. This is especially irritating because almost all settings are the same! Adobe, you could do much better in this regard.

Fortunately I still had CS6 sitting around, so it served as a guide for my preferred settings. Moral: do not uninstall CS6 beforehand!

Trying to select my L* workflow color setting preset brought up the following warning:


Surprisingly clicking OK brought every setting in, so I’m curious what settings aren’t supported… To make sure everything will be fine next time I just re-saved my color presets.

Then uninstalled CS6.

Plugin compatibility

This is always a question when one updates Photoshop. Here’s a quick rundown of the three plugins I use.

  • PhotoKit Sharpener works fine, you just have to grab the new CC-aware setup.
  • Perceptool wasn’t even CS6 compatible, but you can download a free action incarnation of it that works well on CC. It’s definitely worth trying – especially at this price point.
  • NoiseWare Pro 5 doesn’t work. It crashes Photoshop. I use this only on older images, so not being able to use now isn’t that much pain. Update: Further investigation showed that this is a retina display specific problem. On my external EIZO everything works fine. Already contacted Imagenomic, so that they can fix it.

Getting rid of Bridge

Another good news is Bridge doesn’t get installed automatically. I used it only for browsing my master images, but I’ll try to move this workflow step into another app (likely OS X’s Finder) and save some precious megabytes on my SSD. For those who use it: it is now retina display aware.


The entire process went smoothly (including my monkeying around with copying settings). From now on I will only work with CC, and will post if I find something worth talking about.