Well, midpoint
wasn't doing what I thought it was doing, anyway :) If I recall correctly, I wanted to keep the title area completely white. This can be done by setting the middle
color to white
and setting the midpoint
to taste:
\setbeamertemplate{background canvas}[vertical shading]
[bottom=blue!5,top=white,middle=white,midpoint=.75]
However, if you want a more general solution, you can define arbitrary gradient anchors by redefining one of PGF's internal macros:
\makeatletter
\def\beamer@calcvertshading#1#2#3{%
{\usebeamercolor{palette primary}}
\usebeamercolor{normal text}
\setkeys{beamer@backgroundshade}{top=palette primary.bg!25!bg,bottom=bg,middle={},midpoint=0.5}%
\setkeys{beamer@backgroundshade}{#3}
\ifx\beamer@bgsm\@empty
\pgfdeclareverticalshading{#1}{#2}%
{
% ALTER THESE VALUES
color(0cm)=(\beamer@bgsb);
color(\the\paperheight)=(\beamer@bgst)
}
\colorlet{beamer@backgroundshadestart}{\beamer@bgsb}%
\colorlet{beamer@backgroundshadeend}{\beamer@bgst}%
\colorlet{beamer@average}{beamer@backgroundshadestart!50!beamer@backgroundshadeend}%
\else
\pgfdeclareverticalshading{#1}{#2}%
{
% OR PERHAPS THESE VALUES IF YOU'RE USING `MIDDLE`
color(0cm)=(\beamer@bgsb);
color(\beamer@bgsmp\paperheight)=(\beamer@bgsm);
color(\the\paperheight)=(\beamer@bgst)
}
\colorlet{beamer@average}{\beamer@bgsm}
\fi%
}
\makeatother
A few notes on the relevant macros here:
\beamer@bgst
the top
key value
\beamer@bgsm
the middle
key value
\beamer@bgsb
the bottom
key value
\beamer@bgsmp
the midpoint
key value