Suggestion: you can do away with the colors altogether. Instead, just emphasize the blocks in the original matrix, and retain the emphasis in the max-pooled matrix. The max-pooling process is simple enough that your readers should easily be able to see what's happening, especially given the context of the rest of the document, and you don't have to rely on the mercy of your printer drivers or your readers not having color vision deficiencies.
Here's an example of what I mean. You can change the very thick
thickness to something else if you feel that it's too thick.

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\def\margin{2cm}
\tikzset{block grid/.style={very thick}}
\begin{scope}[xshift=-6cm-\margin,yshift=-2cm]
\draw[help lines] (0, 0) grid (6, 4);
\draw[block grid] (0, 0) grid [step=2cm] (6, 4);
\foreach \row [count=\j] in {%
{9,2,9,6,4,3},%
{5,0,9,3,7,5},%
{0,7,0,0,9,0},%
{7,9,3,5,9,4}%
} {
\foreach \cell [count=\i] in \row {
\node at (\i - 0.5, 4 - \j + 0.5) {\cell};
}
}
\end{scope}
\draw [|->] (-0.5, 0) to node[above] {max pooling} (0.5, 0);
\begin{scope}[xshift=\margin,yshift=-1cm]
%% Optional: uncomment the following line to draw mini-grids inside
%% the smaller grid cells, to really reinforce that each cell here
%% comes from one block in the grid at left.
% \draw[opacity=0.2] (0, 0) grid[step=0.5cm] (3, 2);
\draw[block grid] (0, 0) grid (3, 2);
\foreach \row [count=\j] in {{9,9,7},{9,5,9}} {
\foreach \cell [count=\i] in \row {
\node at (\i - 0.5, 2 - \j + 0.5) {\cell};
}
}
\end{scope}
\end{tikzpicture}
\end{document}