The current behavior is the result of fixing this bug:
http://bugs.freepascal.org/view.php?id=29196The problem with the fix is that it uses the grid.canvas properties for resizing the editor, but the grid canvas properties are different depending on if you are in the paint cycle (and this is where the OnPrepareCanvas may modify the canvas) or not. Also the grid now checks the text layout of the cell and it will position the editor according to this text layout (note that this text layout can only be defined if you use custom columns, check grids reference page:
http://wiki.lazarus.freepascal.org/Grids_Reference_Page, if you are not using custom columns, then the default text layout is always tlCenter). I mention the text layout because in the old situation it was always assumed to be tlTop. If you are not using custom columns, you can also modify the text layout in the OnPrepareCanvas event, but again it will be ignored just like with the font properties. On top on that, OnSelectEditor is not triggered while the grid is in the paint cycle but that doesn't matter because the new code will not use the editor font for resizing the editor, it want to use the grid.canvas
.
How to fix it. Well, according to the code, if you instead of adjusting the font properties of the editor change the font of the grid with the same values AND use custom columns and you set (for the affected column) a TextLayout=tlTop, then it should work more or less like before.