Добрался до вашей замечательной подсистемы Abf.
Вот какой возник вопрос. Хочу программно вставить картинку, но когда я применяю фильтр, то изменение размера происходит непропорционально. Картинка тогда подстраивается под тот размер отображения, который указан жестко  в 
Controllers.PasteView. Если код установки фильтра закомментировать, то поведение более приятное — изображение встраивается в заданный размер отображения, сохраняя исходные пропорции.
Что я делаю не так?
Код:
MODULE CellUtils;
   IMPORT  AbfMedia, HostFiles, Controllers, Models, Stores, Views, Ports, Files, Dialog, TextCmds, TextControllers, TextViews, TextRulers, TextModels, TextMappers, TextSetters, Properties, Log, Services, AbfMediaCmds;
   
   PROCEDURE ForceToNewLine (c: TextControllers.Controller);
      VAR st: TextSetters.Setter; pos, start: INTEGER; msg: Controllers.EditMsg;
   BEGIN
      IF c.HasCaret() THEN
         pos := c.CaretPos();
         st := c.view.ThisSetter(); start := st.ThisLine(pos);
         IF pos # start THEN
            msg.op := Controllers.pasteChar; msg.char := TextModels.line;
            Controllers.Forward(msg)
         END
      END
   END ForceToNewLine;
   
   (* Вставить изображение по центру страницы *)
   PROCEDURE InsertPicture*;
      VAR
         ops: Controllers.PollOpsMsg;
         c: TextControllers.Controller;
         script: Stores.Operation;
         s: TextMappers.Scanner;
         f: TextMappers.Formatter;
         r1, r2: TextRulers.Ruler;
         p, prop: Properties.Property;
         v : AbfMedia.View;
         loc: Files.Locator;
         name: Files.Name;
   BEGIN
      c := TextControllers.Focus();
      Controllers.PollOps(ops);
      IF ~ c.HasSelection() & (Controllers.paste IN ops.valid) THEN
         Dialog.GetIntSpec("*", loc, name);
         IF loc # NIL THEN
      
            Models.BeginScript(c.text, "#CellUtils:InsertPicture", script);
            
            f.ConnectTo(c.text);
            s.ConnectTo(c.text);
            s.Scan;
            IF s.rider.attr # NIL THEN
               f.rider.SetAttr(s.rider.attr)
            END;
            ForceToNewLine(c);
            r1 := TextViews.ThisRuler(c.view, c.CaretPos());
            r1 := TextRulers.CopyOf(r1, Views.deep);
            r2 := TextRulers.CopyOf(r1, Views.deep);
            TextRulers.SetCentered(r1);
            TextRulers.SetNoBreakInside(r1);
            Controllers.PasteView(r1, Views.undefined, Views.undefined, FALSE);
            TextCmds.InsertParagraph;
            
            v := AbfMedia.dir.New();
            v.SetEmbLink(loc(HostFiles.Locator).path$ + "/" + name$);
            Controllers.PasteView(v, 400 * Ports.point, 400 * Ports.point, FALSE);
            v.AllowResize(1);
            
            TextCmds.InsertParagraph;
            f.SetPos(c.CaretPos());
            f.WriteString("Рис. #. Подпись к рисунку");
            f.WriteLn;
            TextCmds.InsertParagraph;
            Controllers.PasteView(r2, Views.undefined, Views.undefined, FALSE);
            
            (* Устанавливаем фильтр *)
            prop := AbfMedia.NewBrowseProp();
            prop(AbfMedia.BrowseProp).filter := 6;
            prop.valid :={0};
            prop.known :={0};
            c.SetSingleton(v);
            Properties.CollectProp(p);
            Properties.Merge(prop, p);
            Properties.EmitProp(p, prop);
            
            
            Models.EndScript(c.text, script)
         END;
      END
   END InsertPicture;
   
BEGIN
END CellUtils.